To me, understanding why vectors are different from covectors is helped by considering a case where it is impossible to convert between the two.
Instead of the usual space of locations in the universe, let's consider an abstract space from thermodynamics. Suppose you have a balloon filled with air. This balloon has a certain volume V, but the volume isn't constant. It depends on the temperature and air pressure of the room that it is placed into. So we can describe V as a scalar function V(P,T) in a two-dimensional space with coordinates P,T.
Now, in this 2-D space, we can easily define two different types of vector-like objects.
- We can describe the dependency of V on "location" by the one-form \vec{\nabla} V with components V_P = \frac{\partial V}{\partial P} and V_T = \frac{\partial V}{\partial T}.
- We can describe the change in "location" of the balloon as a function of time by the tangent vector \vec{U} with components U^P = \frac{dP}{dt}, U^T = \frac{dT}{dt}
To see that \vec{\nabla} V and \vec{U} are very different types of objects, ask yourself what it would mean for them to be in the "same direction". Obviously, two vectors are in the same direction if they are linear multiples of each other. So in terms of components, that means that there is some real number \alpha such that
- V_P = \alpha U^P
- V_T = \alpha U^T
And that is completely impossible. To see that, just look at the units. If we measure volume in liters, pressure in atmospheres, time in seconds and temperature in degrees, then
- The units of V_P is \frac{liter}{atmosphere}
- The units of U^P is \frac{atmosphere}{second}
- The units of V_T is \frac{liter}{degree}
- The units of U^T is \frac{degree}{second}
From 1&2, we would conclude that \alpha has units \frac{second\ \cdot\ liter}{atmosphere^2}
From 3&4, we would conclude that \alpha has units \frac{second\ \cdot\ liter}{degree^2}
There is no single scaling factor \alpha that could possibly work to make \vec{\nabla V} = \alpha\ \vec{U}. To make sense of these two vector-like objects being in "the same direction", you would need a way to convert degrees into atmospheres.
Here's another impossibility for this 2-D space: computing the "length" of a vector (of either type). Naively, if you have a two-component vector \vec{U} then you could define the length to be |\vec{U}| = \sqrt{(U^P)^2 + (U^T)^2}. But that doesn't make any sense, because U^P and U^T have different units.
But there is one operation that you can do with vectors that DOES make sense: You can multiply a vector by a covector:
\vec{\nabla V}\ \cdot \ \vec{U} = V_P U^P + V_T U^T
This quantity has units \frac{liter}{second}, and has a clear interpretation: It is equal to \frac{dV}{dt}, the rate of change of the volume of V as both the pressure and temperature change with time.
This is getting pretty long-winded, already, but I thought it would wrap up the discussion if I showed how the "impossibilities" are resolved by a metric tensor.
Although we can't convert \vec{\nabla V} into \vec{U} with a real number \alpha, we could relate them by a tensor g. Suppose we had a tensor g with 4 components g_{PP}, g_{PT}, g_{TP}, g_{TT}. Then we could use that tensor to convert a vector \vec{U} into a covector \vec{\tilde{U}} = g(\vec{U}) by letting \tilde{U}_i = \sum_j g_{ij} U^j (where i and j run through the set P,T). Then using the tensor g, we could say
- \vec{\nabla V} is in the same direction as \vec{U} if \vec{\nabla V} = \alpha g(\vec{U}).
We could also use g to define a "length" of a vector \vec{U}:
- |\vec{U}| = \sqrt{g(\vec{U}) \cdot \vec{U}}
where \cdot is the operator that multiplies a covector by a vector.
Finally, g would provide a way to convert degrees into atmospheres: the conversion factor F = \sqrt{\frac{g_{PP}}{g_{TT}}} has units \frac{atmosphere}{degree}