In a limited context, the terms "Covariance" and "Contravariance" arise in cases where you have a basis for a vector space that is NOT orthonormal. In the restricted context of the presence of a metric, one way to view covariance and contravariance is to think of them as different basis descriptions of the same object.

Whether it be a vector or a tensor, there exists only one object. Covariant and Contravariant are just different ways of describing it.  Sort of like CGS and MKS units in physics.  In your equations you have to know what "language" the object is described in in order for the equations to "play" together.  The "language" is implied by the level of the indices.

Take 2-d Euclidean space as an example:

Let's assume we have a Euclidean orthonormally represented vector V = <5,12>

Instead of the unit vectors <1,0> and <0,1> lets define new basis vectors:

         A1 = < 0.50, 0.0 >
         A2 = < 0.75, 0.5 >
Let's call this our contravariant basis.  V then equals:

         V = -26*A1 + 24*A2
Our contravariant components of V are now:
         V1 = -26
         V2 =  24

Now let's define a new basis, that is reciprocal to A1A2 and call it A1 and A2.
        A1 = < 2.0, -3.0 >
        A2 = < 0.0,  2.0 >

Notice that the Euclidean inner product between these two bases is the identity matrix:
 Ai dot Aj = 0, unless i=j, in which case Ai dot Aj = 1.  This is what is meant by reciprocal basis.

In this new (covariant) basis we have:

        V = 2.5 A1 + 9.75 A2

Our covariant components of V are now:

        V1 = 2.50
        V2 = 9.75

In both cases V is still V.  We have just described it in two different basis languages (really three if you include the Euclidean description), i.e.:

                               Contravariant        Covariant
        V = <5,12> = V1A1 + V2A2 = V1 A1 + V2 A2

In all cases, V is still the same vector V!

 In the Euclidean case the metric components are:

        G11 = 1
        G12 = 0
        G21 = 0
        G22 = 1

In the "Contravariant" case the metric components are:

        G11 = A1 dot A1  =  < 0.50, 0.0 > dot < 0.50, 0.0 > = 0.2500
        G12 = A1 dot A2  =  < 0.50, 0.0 > dot < 0.75, 0.5 > = 0.3750
        G21 = A2 dot A1  =  < 0.75, 0.5 > dot < 0.50, 0.0 > = 0.3750
        G22 = A2 dot A2  =  < 0.75, 0.5 > dot < 0.75, 0.5 > = 0.8125

In the "Covariant" case the metric components are:

        G11 = A1 dot A1  =  < 2, -3 > dot < 2, -3 > = 13
        G12 = A1 dot A2  =  < 2, -3 > dot < 0,  2 > = -6
        G21 = A2 dot A1  =  < 0,  2 > dot < 2, -3 > = -6
        G22 = A2 dot A2  =  < 0,  2 > dot < 0,  2 > =  4

Notice that   Gij = (G ij) -1

"Raising" or "Lowering" the indices refers to changing the basis between
covariant and contravariant.  This is done using the metric.

        Vj = V i * Gij   and

        V j = Vi * G ij

where we sum over repeated indices.

V dot V = 52 + 122 = 132 = V i V j G ij = Vi Vj G ij  =  V i V= Vi V i

(note: be careful above.  I'm mixing exponentials and indices.)

For another great web page check out  Kevin Brown's exposition on this subject.

  The terms contravariant and covariant apply to bases based on how they arise, and how the object's components transform between different coordinate systems.  In the physical sciences "Contravariant" applies to vectors that arise from the derivative of the position vector, such as velocity and acceleration.  Given that definition of contravariant, objects derived by taking the gradient have their coordinates expressed in the covariant coordinate "language".

  A reminder, this conceptual view of the situation only applies to sets for which there is a metric, which includes General Relativity (in cases where you are not trying to solve for the metric).  In actuality though, vectors and covectors are more generally defined than in the above conceptual model, but in the case of the existence of a metric, the model is equivalent and will take you a long way.

A more general geometric view of a covector is to think of it as a collection of parallel spaced infinite planes (in 3d Euclidean space, parallel lines in 2d Euclidean space, etc.)  The magnitude is viewed as the plane density, for example, "how many parallel planes per inch."  As mentioned above the gradient is an example of this.

  Notice that when taking the inner product between a vector and a covector the metric is not used or needed.  Vectors and Covectors, Contravariance and Covariance, are generally defined independent of a metric. In the presence of a metric there is a "formula" that relates the two.  Without a metric the two are independent and unrelated.  The general definition of a covector is, "a linear real valued function of a vector" or a function that takes in a vector and outputs a real number.  In the presence of a metric this is just the inner product.  Without a metric the term "inner product" is meaningless because metrical objects such as angles and length are not defined.