There doesn’t have to be any payload data in a TCP segment. The segment could contain only control information signalled in the TCP header. If a segment arrives with no payload data, the receiving TCP doesn’t have to send anything to the application, unless the control information requires it to (e.g. the flags signal a FIN or RST and TCP needs to signal that to the application).
Interestingly there is nothing stopping TCP sending application data within the TCP payload during the three-way handshake. If TCP receives payload data before completion of the three-way handshake it must buffer the data and not pass it onto the application until the handshake is completed and the connection is in an ESTABLISHED state.
From RFC 793:
Although these examples do not show connection synchronization using
data-carrying segments, this is perfectly legitimate, so long as the
receiving TCP doesn't deliver the data to the user until it is clear
the data is valid (i.e., the data must be buffered at the receiver
until the connection reaches the ESTABLISHED state). The three-way
handshake reduces the possibility of false connections. It is the
implementation of a trade-off between memory and messages to provide
information for this checking.
There is also an extension called TCP Fast Open (RFC 7413) that is useful for short lived connections and allows the data, under certain conditions, to be sent to the application before the three-way handshake completes.
So to answer your question it depends on the implementation and whether the application has any data to send during the three-way handshake. Some connections have no application data in the payload of the handshake segments, others do.
There is always an application to hand data to for each TCP connection (unless it is an attempt to connect to an unopen port). An application on one side initiated the connection (through TCP) and another application on the other side opened a port and is listening on that port (through TCP). If the segment has no payload data, TCP doesn’t need to send anything to the application. If it does, it can sent it once the connection is ESTABLISHED or earlier with Fast Open