For a basic birdseye overview of connectivity I can recommend this article with deeplink into the relevant part.
As for ports used by the client you can find a good table here.
In regards to how it works, I have not found the official docs from Microsoft, but usually these kind of connections work like this:
The way IM push is done is that the client (Skype for Business) opens a TCP connection to the messaging server. This connection is meant to remain open for as long as the phone is turned on. Fortunately a TCP connection uses absolutely no bandwidth when it's not transmitting anything, so it doesn't waste a lot of data, the radio transmitter can power down, etc.
The connection can remain open indefinitely, however behind a NAT, the NAT infrastructure keeps a table of open connections that it is handling, and drops connections that have been idle for some time, usually 10-15 minutes. Neither end gets notification of this. So this is handled by sending a TCP keep-alive packet which refreshes the entry in the carrier's NAT connection table. This only costs about 50 bytes or so, and only needs to be done every few minutes.
For VoIP things it is as far as I know ICE being used, you can check out this really good article by Jeff Shertz