

That’s partially correct, partially wrong. An open port is required to allow for incoming connections for torrenting over TCP.
For TCP:
If a seed does not have an open port, a potential leech with an open port shares their IP & port with the tracker. The seed regularly asks the tracker for potential leeches. If the tracker provides a leech with an open port, then the seed connects to the leeches open port. This connection then allows the leech to download from the seed.
If neither of seed and leech has an open port, no connection can be established and thus no torrenting is possible.
For uTP/UDP:
If both peers (seed & leech) have no open ports, the tracker can use UDP hole punching to temporarily open up a port for the peers. The second peer can then connect directly to the first peer’s port which has been opened up by the tracker.
This only works for public torrents and with PEX enabled. For private trackers an open port is required.
See my comment here. An open port is only required for TCP connections. uTP/UDP allows the tracker to open up a port temporarily in many cases. This won’t work for those stuck with ancient torrent clients.