If V has finite dimension n then so does V*. The dimension of the annihilator of U in V* then equals the codimension of U in V. If we choose a basis of V, and use it to identify elements of V with ``column vectors'' of length n, then elements of V* correspond to ``row vectors'' of the same length. There is in general no canonical isomorphism between V and V*, even if V is finite dimensional. We do, however, have a canonical map from V to its second dual V**, which is an isomorphism when V is finite dimensional. The key idea is that v*(v) is ``bilinear'': not only is it a linear function of v for each choice of v*, but it's also a linear function of v* for each choice of v -- so each v may be considered as a functional on V*, that is, as an element of V**!
If T is a linear transformation from V to W then we get a linear transformation T* from W* to V*, called the adjoint of T and denoted by T*, defined as follows: T*(w*) is the element of V* taking any v to w*(T(v)). The adjoint is itself a linear map from Hom(V,W) to Hom(W*,V*). This map is an isomorphism when V and W are finite dimensional. In that case, if we choose bases for V and W then the matrix of T* with respect to the dual bases is the transpose of the matrix of T with respect to our bases for V,W. Naturally T** is identified with T under the canonical maps that identify V** and W** with V and W.