It is a texture that encodes 'normal' information. Because it is in a texture image (i.e. sampler2D), we can encode more information (i.e. it is more information dense) than using the geometry of a model. Then we can use this texture to compute lighting on our surface, and often gain an illusion of depth and detail on models that would be computationally expensive using polygons.