You have a stateful firewall: it accepts incoming packets if they belong to an existing connection. That way you can connect to other hosts (e.g. web servers or P2P users) and don't have to explicitly allow replies coming in.
(Ports aren't like doors or windows – more like labels on a packet, based on which the firewall allows specific packets to pass through. The same port can be "open" in the sense that a program is waiting for connections to that port, but "closed" in the sense that a firewall blocks those connections, and vice versa.)
However, if you connect out, those other hosts need to have the necessary ports allowed in their firewalls. With P2P connections that can easily become a problem: if both people decide they're fine with only outgoing connections, well, that also means neither one can accept connections from the other.
So most of the time you can still download from P2P users who have their firewalls set up correctly (and upload, but only if you connect first) – but nobody will be able to connect to you.
Note that not all P2P services will work as you describe. Bittorrent for instance will function minimally without forwarded ports, but will not support lots of features, and is generally considered impolite, as other users cannot benefit from your participation in the swarm the way you benefit from theirs. – Frank Thomas – 2016-05-10T12:08:13.077