Normal Mapping - You can do this in any program you feel like doing it in. It's hard to explain without going into technical detail about how they work. But here goes. I'm going to talk about tangent space normal maps here because world space ones are weird and hardly used any more.
The red, green and blue values of each pixel of your texture represent a 3D vector, an arrow in 3D space that points in a direction. Red represents X, Green represents Y and Blue represents Z.
A perfectly flat surface will have a normal pointing directly along the Z axis.
(Put a pencil point down on a desk, that's a flat normal).
This is why normal maps appear to be mostly blue. Relative to the geometry most surfaces are relatively flat.
Now there are two major ways of creating a normal map. Using actual 3D information or faking 3D information.
The preferred way for most "actor" models (players, vehicles, weapons, etc) is to create a high poly version of your model and then to render the detail of the high poly model onto a lower poly version of the same mesh. Tools such as Z-Brush make this fairly trivial to do and are really worth investing in.
If you can't do this, or require a normal map for a general reusable texture, then you can manually paint a normal map and use the knowledge of what the Red Green and Blue channels of the map do to get the effect you want. I recommend using something like the CrazyBump plugin for photoshop to give you a base.
Specular Mapping
Paint over your unwrap in grey scale. The closer to white something is the shinier it will appear to be in game.
Ambient Occlusion Mapping
Effects how much ambient lighting effects a part of your model. You can use this to create global highlights and lowlights.
Diffuse Mapping
Fancy name for colour mapping. In scientific lighting language "Diffuse" means the light that is reflected from a surface. So it's what you actually see when you look at an object.
This is where you actually paint stuff.