Normal mapping is a technique in which you use a high resolution mesh to generate a map for a low resolution mesh. High resolution meshes are made of more complicated geometry and can be very taxing in an environment where resources are at a premium (for example, in a large scene with other high poly objects, or on a system with limited processing power). As a result, performance can suffer greatly. Normal mapping is commonly used in these situations to capture the detail of a high resolution mesh with the geometry of a low resolution model.
A normal map differs from a texture map in that it produces a multi-channel image (shown below) based on the normals of the high resolution (source) mesh. This information is used to light the mapped details on a low resolution (target) mesh convincingly, even though the surface itself is relatively flat.