Basically, when sending internet packets over TCP, when the packet reaches the target computer, the sender waits for the target to respond saying "Okay, I got this packet." before sending the next one along. UDP doesn't wait for this response.
As a result, packets sent via UDP protocol may arrive out of order, some may get lost on the way, etc. However, since there's no error checking, UDP is much faster than TCP.
Online games use a mixture of TCP and UDP. Commonly, UDP is used for things where its "okay" if they get lost, like player position and npc positions, etc. This is why you have noticable lag in the game...if packet A arrives and it says the player is at 1,1 and then packet C arrives saying he's at 2, 2 but then packet B arrives saying he's at 1, 2, well, you get the idea. This is acceptable by online game standards, because you can't wait for information like that, and it'll correct itself anyway when you get newer and newer packets.
TCP is used for data that you must get in its entirety. The Torque game engine (Tribes) uses something called "datablocks," which it sends at the start of every game as its loading. These contain information about all the objects and items in a game (for example, the mass of a car). This is sent via TCP as it is vital that the player has all this information.
Hope this helps!