Peer Exchange (PEX) has been introduced with Azureus 220.127.116.11 to reduce the load on trackers and the Distributed database (also introduced with 18.104.22.168) since peers only need them as an initial source of peers and then only depend on other peers supporting PEX. Of course that doesn't mean they don't report back to the tracker, but Azureus peers only do it at the max-interval thus minimizing the load.
The exchange is implemented through the Azureus messaging protocol and sends other peers the IP/Port list of newly connected or disconnected peers. For legacy clients, which don't support the enhanced messaging, the remote port is only known when it is a local (outgoing) connection. That is not the case for newer Azureus versions which announce their ports through the advanced handshake even if it is a remote (incoming) connection.
Through PEX Azureus is capable of discovering peers swifter which means speedier bootstrapping to the swarm. It keep swarms together when the tracker is down and it is even able to find non-Azureus peers (as long as at least one Azureus peer has a local connection to that peer), which isn't possible with the DDB alone.
Since Beta 22.214.171.124 B38 the Exchange and Handshake messages include are obfuscation header aware, see Stream encryption.
AZ PEX obeys the conventions defined here.