when blender makes the normals in tangent space it has to use 3 direction vectors, one is the normal of a face, the other is vector "b" and the other is the cross between this two vectors.

What is vector "b"?

"b" refers to the binormal.

In tangent space calculations you have the Normal, Tangent, and Binormal. These 3 normalized vectors represent the basis vectors of the tangent space, which BTW is not necessarily an orthogonal space. These vectors are in object space, and the 3x3 matrix generated from them represents the transformation from object space to "tangent" space.

The normal is the vector pointing directly away from the surface. This is calculated from the vertex positions and has nothing to do with the UV coordinates. The tangent vector points along the direction of change of the U coordinates. The binormal points along the direction of change of the V coordinates.

if the UV coordinates are orthogonal, then you can calculate the binormal like this:

B = T x N

Sometimes in games, inside the shaders, the binormals are calculated this way. But, again, this only works if the U and V coordinates are orthogonal, which they're not guaranteed to be. It's very easy for artists to make the texture coordinates flow however they want. The general solution is to pass in all three, N, T, and B in the vertex to the vertex shader.