The message size is limited by the packet framer and deframer, which is modified from the packet framer/deframer found in GNU Radio. I believe that the limit is 4096 bytes. However, the laws of practical wireless comms may limit the system to smaller packet sizes. The more bits you have, the more likely you'll see a bit error in the frame, causing the deframer to detect a bad CRC and discard. Smaller packets = smaller target?
The heartbeat block simply generates a message with the specified key/value at the specified period. In the case of pre-cog, this block just produces a strobe to make the work function run via the mostly useless "ctrl_in" port. Or, you may use it to generate a periodic broadcast message if you connect it to the application input port. The scheduler will not run the work function unless a message arrives at an input port. The work function must run periodically to support the stop-and-wait ARQ functionality.
-John