Like Augusto pointed out, regular nodes use TCP. This works fine for a lot of things.
But if you have multiple processes that need to use messages that contain large amounts of data (like images or point clouds) packaging the message, sending it, then unpacking it can take a bit of time. If the two processes are on the same computer, it is quicker to just send a pointer to that data rather than sending the data itself over TCP.
This only works for processes (aka nodelets) on the same computer though since a pointer for one computer doesn't make sense for another computer. Nodes on the other hand can work over networked computers since you're sending the actual data.
So nodelets don't make the processes quicker, but it is a quicker way to get information from one process to another. A good rule of thumb would be to always use nodes (because they are easier to use, and more flexible) unless you get in a situation where the message passing is too slow for your application and causing problems, then you would consider using nodelets.