Normal maps are an encoding of a geometry inside an image. Each pixel color (RGB) corresponds to a (XYZ) orientation which defines a fake normal for each particular point defined in the UV map.
If we take the example of the cube, unwrapped like this :
And if we bake in the tangent space (which means the space X Y in the face plane and Z along the normal), we obtain a flat image because the encoding corresponds to the face itself (so no alteration of the normals). This is like to say "encode me in my own space coordinates" :
If we bake from object space, this space is unique to the cube but each tangent space of each face is orientated differently from the object space point of view. That's why we obtain this below. And you can notice that one of the face has the same color as above because this face shares the same coordinate system as the object (in this particular case) :
Now from the normal map node, this is the same principle but inverted. The bake encodes the coordinates and the node decodes it at the render time :
- World space : decodes from the global (world) coordinate system. It mean that the render will change if the object (in its whole) is rotating (not sure of that last point).
- Object space : similar to the bake above. Encoded faces normals (point by point) are translated from the whole object coordinate system
- Tangent space : each point of each face is decoded from the face coordinate system
We have seen above that baking in tangent space gives a flat image. So this seems to be useless. But in fact this kind of bake is generally used to bake a complex object (highpoly) into a more simple one (lowpoly). Here you use the 'selected to active' option when you are baking.
So what happens after that : the image encode the highpoly normals and the "normal map" node decodes it for the lowpoly rendering. That mimics the highpoly normals along the lowpoly faces.