I've had a look over the wikipedia article. In the wikipedia article, what they call a "full cone" is what Microsoft calls "Open" NAT type, and what they call a "restricted cone" (address or port) is what Microsoft calls "Moderate" NAT, and what they call "Symmetric" is what Microsoft calls "Strict" NAT.
The thing you have to realise is that there are no "standards" with NAT; NAT was basically invented independently by a lot of different companies, and every different device has a slightly different implementation. These types that we talk about are just classification schemes, trying to roughly group together the most important types of behaviours of NAT devices that have been observed in the wild. There are lots of subtle different behaviours, but as they were setting out XBox Live, they figured out that from the point of view of playing peer-to-peer networked games, their three "Open", "Moderate", and "Strict" NAT types were the only ones that mattered. This made NAT a LOT easier to think about!
Most consoles have a built-in matchmaking service which will handle NAT traversal for you. On PC, different games have different implementations, but many (most?) mainstream games use networking middleware to perform this function. But at a basic level, here's how it works.. let's assume we have three players, Player A (hosting a game), Player B (playing the game), and Player C (who wants to join).
Here's how the exchange works:
Player C -> Matchmaker: "I want to join Player A's game"
Matchmaker -> Player C: "Okay, he's at this address:port"
Matchmaker -> Player A: "Player C is about to join you. He's at address:port"
Player C -> Player A: "Hi, I'm player C!" \
Player A -> Player C: "Hi, I'm player A!" / sent repeatedly, until both can see each other's messages. This is the hole-punching!
Now. At this point, Player A and Player C are both sending messages to each other, using the address that the Matchmaker sees for them. Let's consider just the message that player A is sending to player C.
If C has "Open" NAT, then everyone sees the same external address/port for him, and anybody can send a message there and he'll receive it. This is basically like not having a NAT device at all, or just an explicitly forwarded port on the NAT device. If this happens, then player C will receive player A's message.
If C has "Moderate" NAT, then everyone sees the same external address/port for him, but C will only actually receive the message from A if he's already sent a packet to A. So if C has sent his message to A before A's message to C arrives, A's message will be received by C. If not, then A's message will be discarded by the NAT device. (This is why we send the "Hi!" message repeatedly, until both sides receive it; depending on network lag, the first several packets may be silently dropped by the NAT device.)
If C has "Strict" NAT, then everyone sees a different external address/port for him, and A's message (addressed to the IP:port seen by the matchmaking server) ends up being sent to the wrong address; C will never receive it, because C wants to talk to A from a different external IP/port. This is the nasty case.
Let's assume that C has "strict" NAT. In this case, we look at what A has. If A also has "strict" NAT, then the two simply won't be able to talk to each other directly, since neither can find the right address to talk to the other, based upon the address that the matchmaker knows. Moderate is a similar problem; since A doesn't know the right address to send his "Hi!" packet to, he can't punch a hole for C to send his packet through. But if A has "open" NAT, then A will receive a "Hi, I'm Player C!" message from an IP/Port different from the one that the matchmaker told him to expect. If A accepts this different address/port, then he can successfully talk to C.
B has the same issue as A; in order for C to fully join and talk to all members of the game, all those other members must be "Open", so that they can receive an arbitrary message from some unknown address claiming to be player C, and then send their packets to that address.
When I say that only about 10% of NAT devices are "strict", it's based on a console online game I worked on and administered for a while post-launch, a few years back. One of the servers I wrote had clients self-diagnose their NAT types, and we used that information as part of matchmaking (that is, "strict"-type players weren't shown any game sessions which had non-"open" players in them, because we knew that they wouldn't be able to communicate with each other). This was on PS2 and PSP, several years back; about 20% open, 70% moderate, 10% strict. I imagine that the numbers are even better for folks with "next-gen" consoles. As I mentioned, Microsoft put a lot of pressure on the NAT market when they started their "XBox Live Certified" program, because those devices had to be at least "Moderate" in order to qualify for certification.
Hope I explained that okay? I know it's kind of a TL;DR wall of text.. :/