Gradiant descent and the conjugate gradient method are both algorithms for minimizing nonlinear functions, that is, functions like the Rosenbrock function
$
f(x_1,x_2) = (1-x_1)^2 + 100(x_2 - x_1^2)^2
$
or a multivariate quadratic function (in this case with a symmetric quadratic term)
$
f(x) = \frac{1}{2} x^T A^T A x - b^T A x.
$
Both algorithms are also iterative and search-direction based. For the rest of this post, $x$, and $d$ will be vectors of length $n$; $f(x)$ and $\alpha$ are scalars, and superscripts denote iteration index. Gradient descent and the conjugate gradient method can be used to find the value $x^*$ that solves
$
\min f(x)
$
Both methods start from an initial guess, $x^0$, and then compute the next iterate using a function of the form
$
x^{i+1} = x^i + \alpha^i d^i.
$
In words, the next value of $x$ is found by starting at the current location $x^i$, and moving in the search direction $d^i$ for some distance $\alpha^i$. In both methods, the distance to move may be found by a line search (minimize $f(x^i + \alpha^i d^i)$ over $\alpha_i$). Other criteria may also be applied. Where the two methods differ is in their choice of $d^i$. For the gradient method, $d^i = -\nabla f(x^i)$. For the conjugate gradient method, the Grahm-Schmidt procedure is used to orthogonalize the gradient vectors. In particular, $d^0 = -\nabla f(x^0)$, but then $d^1$ is equal $-\nabla f(x^1)$ minus that vector's projection onto $d^0$ such that $(d^1)^Td^0 = 0$. Each subsequent gradient vector is orthogonalized against all the previous ones, which leads to very nice properties for the quadratic function above.
The above quadratic function (and related formulations) is also where the discussion of solving $Ax = b$ using the conjugate gradient method comes from, since the minimum of that $f(x)$ is achieved at the point $x$ where $Ax = b$.