A vector space is a set whose elements satisfy certain axioms. Now there are physical entities that satisfy these properties, which may not be arrows. A co-ordinate transformation is linear map from a vector to itself with a change of basis. Now the transformation is an abstract concept, it is just a mapping. To calculate it we need basis and matrices and how a transformation ends up looking depends only on the basis we choose, a transformation can look like a diagonal matrix if an eigenbasis is used and so on. It has nothing to do with the vectors it is mapping, only the dimension of the vector spaces is important.
So it is foolish to distinguish vectors on the way how their components change under a co-ordinate transformation, since it depends on the basis you used. So there is actually no difference between a contra variant and covariant vector, there is a difference between a contra variant and covariant basis as is shown here http://arxiv.org/abs/1002.3217. An inner product is between elements of the same vector space and not between two vector spaces, it is not how it is defined.
I would like to discuss in this question, if there is something more to this concept and if really this is an abuse of notation and concepts in common GR books.
Please don't close this question, as this concept is not discussed in this regard anywhere on SE or possibly the internet.