One thing that often confuses beginners in "differential geometry" is that they have been used to using, in Calculus, "position vectors". "Position vectors", extending from a fixed origin to the point, can exist only in Euclidean space. (I used to worry a great deal whether "position vectors" on the surface of a sphere "curved" around the surface or went straight through the sphere!) In fact, the only vectors we ca deal with in general spaces are tangent vectors- which leads to "all vectors are derivatives". If we are given a path on the surface of a sphere, for example, a tangent vector to that path is tangent to the sphere and is a derivative. If you look at all the tangent vectors to a sphere at a give point, you have a vector space- the "tangent space" or "tangent plane" at that point. The "contravariant vectors" are simply the functions that assign a given tangent vector at each point. And when you have a vector space, you have it "dual space", the set of all functionals on that vector space. That is, the set of all functions that, to every vector assign a number. It is easy to show that the set off all such functionals on an n-dimensional vectors space is, itself, an n-dimensional vectors space. Those are the "covariant vectors"
Since vectors "are" derivatives, we can write every vector in terms of, say, [itex]\partial/\partial\theta[/itex] and [itex]\partial/\partial\phi[/itex] (or derivatives with respect to whatever parameters are used to define the surface). Functions that assign a number to derivatives are integrals so every "co-vector" or "covariant vector" can be written as, applying the functional to vector v, [itex]\int v\cdot (f(x,y,z)dx+ g(x,y,z)dy+ h(x,y,z)dz)[/itex] so that we can think of the basis for the space of covariant vectors as [itex]dx[/itex], [itex]dy[/itex], and [itex]dz[/itex].