As macouno told, normal maps store data, in which direction the light has to be reflected from the surface. Each pixel in the generated map represent a vector (R,G,B values tell a direction, their value is normalized, meaning that the lenght of the vector is exactly 1). As vectors need a coordinate system in which they can be described, you have to tell which system they are relative to. Talking about world space means, that the RGB values are simply told according to the base coordinate system (the base XYZ axis). Object space is similar. This system might have transformations (translation, rotation) in world space.
World space normal maps can be used for non-moving, non deforming bodies.
Object space nmaps are good for movable, rigid (non deforming) objects. (transformations of the object don’t affect the lighting, as it is relative to the object space and not to the world space)
…and here we go: tangent space. Imagine that you design a coordinate system for each vertex. The nmap values are now calculated relative to these (NOT ONE like the other two mentioned above!) systems: every pixel has an interpolated system of the 3 affected coord-systems of it’s tri, values are stored according to that. Why is it good? Now you can deform the object, the nmap still can be used. For example a character might use it. It even means that the coordinate systems have to be stored per vertex. If you don’t have this data or you don’t know the exact algorithm to recalculate them the way, as the nmap generator, tangent space nmaps are useless or at least they give bad results.