In principle, 255.255.255.255 is the “global” broadcast address, which means that the IP stack is supposed to send the packet to all network interfaces, and routers that are configured to forward broadcasts are supposed to send them on.
In practice, there are almost no routers forwarding broadcasts, and a lot of stacks simply send one copy of the packet to the interface where the default route points to.
The subnet broadcast address is used to select a specific interface. In both cases, these should be mapped to the network layer broadcast address (which would be FF:FF:FF:FF:FF:FF for Ethernet).
In general, using 255.255.255.255 is a bad idea, as there are several setups where the interface with the default route is exactly the wrong choice. Selecting an interface explicitly is better, but needs to be done carefully.
My other suggestion would be to use multicast, if that makes sense for your application. The same caveats as for broadcast traffic still apply, but this allows uninterested hosts to quickly identify your packets, and it allows network managers to set up specific forwarding rules for your protocol.