Circular and Linear Convolution
If you have a vector of data, $d$, that is composed of elements $d_1, d_2,... d_N$, then linear convolution operates on them in order, starting with $d_1$ and ending with $d_N$.

Imagine that the data vector $d$ is represented by a slip of paper with the $N$ elements written in order.  Now, imagine forming the slip of paper into a circle by touching the end (where $d_N$ is written) to the beginning (where $d_1$ is written).  Convolving that is circular convolution.  In practice linear convolution and circular convolution are nearly the same, the difference happening at the beginning and the end of linear convolution.  In linear convolution you assume that there are zero's before and after your data (i.e. we assume that "$d_0$" and "$d_{N+1}$" are 0), while with circular convolution we wrap the data to make it periodic (i.e. "$d_0$" is equal to $d_N$ and "$d_{N+1}$" is equal to $d_1$).

The same principles hold for multi-dimensional arrays.  For linear convolution there is a definite start and end for each axis, with zeros assumed before and after.  For circular convolution the data wraps around in each axis.

When would I choose one over the other?


With a few very rare exceptions we don't "choose" circular convolution.  We almost always want linear convolution.  The reason that circular convolutions pop up as much as they do is because convolutions via FFT's (FFT, multiply, inverse FFT) are circular convolutions, not linear.