So this runs into a bunch of networking details, and it's going to be tricky to give a detailed answer, but I can give a high-level overview.
The first is the maximum size of a TCP segment. This is called the MSS (Maximum Segment Size). Importantly, the MSS is not hard-coded to 1500 bytes (usually), and in fact is almost never actually equal to 1500 bytes. Instead, the MSS is derived from a different concept, the MTU (Maximum Transmission Unit): more specifically, the path MTU.
The MTU is the limit of the largest single unit that can be transmitted on the network layer. Typically in most networks this ends up being the largest size of payload in an ethernet frame. Most networks limit the payload of an ethernet frame to 1500 bytes. This means the maximum number of bytes in an IPv4 TCP segment is 1500 bytes minus the smallest possible IPv4 header size (20 bytes) minus the smallest possible size of a TCP header (20 bytes), allowing for 1460 to be the MSS. In some cases you can use "Jumbo Frames" to make the ethernet frame payload larger, which allows a larger MSS, and on loopback the MSS can potentially be huge, but in general the MSS is 1460 bytes for IPv4.
Importantly, this is a hard upper limit. TCP attempts to avoid IP fragmentation at all costs, so each TCP segment will never be larger than 1460 bytes. How do we send more data than 1460 bytes then?
Well, the trick is that TCP has what's called a "send window". This is the maximum number of unacknowledged bytes that the receiver will allow to be in flight. This number changes over time based on congestion control feedback. For fast reliable networks, this number increases over time, allowing the sender to send faster and faster. When the sender has sent as many bytes as the window allowed, it has to wait for acknowledgements before it sends more. This allows the receiver to exert backpressure on the sender, slowing it down.
Thus, the MSS is not variable, but the total number of bytes you can have on the wire is.
Importantly, therefore, the TCP packet being "too big" is not going to be a problem. Importantly, TCP packets do not arrive slowly: they arrive in a single transfer unit (ethernet frame). This means they either arrive, or they do not. If they arrive, you can read their bytes: if they don't, you can't.