In very simple words, NPN is good when you want to pull something to ground. If you want to pull something to VCC with a NPN you need to rely on a resistor to do the pulling. The NPN pulls the output to GND when on and the resistor pulls the output to VCC when the NPN is off. (or somewhere in the middle when the transistor is half on etc.)
If you use a PNP then its the opposite, you can pull things to VCC, but require a resistor to pull low when the PNP is off.
Ideally you don't want the resistor at all, because it wastes energy, so using both a NPN and PNP together you can make a circuit which can pull the load to either VCC or GND.