What is the difference between gradient descent and gradient boosting? Are they interdependent on each other by any way?
They're two different algorithms, but there is some connection between them:

Gradient descent is an algorithm for finding a set of parameters that optimizes a loss function.  Given a loss function $f(x, \phi)$, where $x$ is an n-dimensional vector and $\phi$ is a set of parameters, gradient descent operates by computing the gradient of $f$ with respect to $\phi$.  It then "descends" the gradient by nudging the parameters in the opposite direction of the gradient.  This process is repeated for different points in the space of inputs (i.e. different $x$s) until a minimum of $f$ is found.

Gradient boosting is a technique for building an ensemble of weak models such that the predictions of the ensemble minimize a loss function.  I think the Wikipedia article on gradient boosting explains the connection to gradient descent really well:  


  . . . boosting algorithms [are] iterative functional gradient descent algorithms. That is, algorithms that optimize a cost function over function space by iteratively choosing a function (weak hypothesis) that points in the negative gradient direction.


So the connection is this:  Both algorithms descend the gradient of a differentiable loss function.  Gradient descent "descends" the gradient by introducing changes to parameters,  whereas gradient boosting descends the gradient by introducing new models.