What is the difference between ZCA whitening and PCA whitening? I am confused about ZCA whitening and normal whitening (which is obtained by dividing principal components by the square roots of PCA eigenvalues). As far as I know,
$$\mathbf x_\mathrm{ZCAwhite} = \mathbf U \mathbf x_\mathrm{PCAwhite},$$ where $\mathbf U$ are PCA eigenvectors.
What are the uses of ZCA whitening? What are the differences between normal whitening and ZCA whitening?
 A: Given an Eigendecomposition of a covariance matrix
$$
\bar{X}\bar{X}^T = LDL^T
$$
where $D = \text{diag}(\lambda_1, \lambda_2, \dots, \lambda_n)$ is the diagonal matrix of Eigenvalues, ordinary whitening resorts to transforming the data into a space where the covariance matrix is diagonal:
$$\sqrt{D^{-1}}L^{-1}\bar{X}\bar{X}^TL^{-T}\sqrt{D^{-1}} = \sqrt{D^{-1}}L^{-1}LDL^TL^{-T}\sqrt{D^{-1}} \\
= \mathbf{I}
$$
(with some abuse of notation.) That means we can diagonalize the covariance by transforming the data according to
$$
\tilde{X} = \sqrt{D^{-1}}L^{-1}X.
$$
This is ordinary whitening with PCA. Now, ZCA does something different--it adds a small epsilon to the Eigenvalues and transforms the data back.
$$
\tilde{X} = L\sqrt{(D + \epsilon)^{-1}}L^{-1}X.
$$
Here are some pictures from the CIFAR data set before and after ZCA.
Before ZCA:

After ZCA with $\epsilon = 0.0001$

After ZCA with $\epsilon = 0.1$

For vision data, high frequency data will typically reside in the space spanned by the lower Eigenvalues. Hence ZCA is a way to strengthen these, leading to more visible edges etc.
A: Let your (centered) data be stored in a $n\times d$ matrix $\mathbf X$ with $d$ features (variables) in columns and $n$ data points in rows. Let the covariance matrix $\mathbf C=\mathbf X^\top \mathbf X/n$ have eigenvectors in columns of $\mathbf E$ and eigenvalues on the diagonal of $\mathbf D$, so that $\mathbf C = \mathbf E \mathbf D \mathbf E^\top$.
Then what you call "normal" PCA whitening transformation is given by $\mathbf W_\mathrm{PCA} = \mathbf D^{-1/2} \mathbf E^\top$, see e.g. my answer in How to whiten the data using principal component analysis?
However, this whitening transformation is not unique. Indeed, whitened data will stay whitened after any rotation, which means that any $\mathbf W = \mathbf R \mathbf W_\mathrm{PCA}$ with orthogonal matrix $\mathbf R$ will also be a whitening transformation. In what is called ZCA whitening, we take $\mathbf E$ (stacked together eigenvectors of the covariance matrix) as this orthogonal matrix, i.e. $$\mathbf W_\mathrm{ZCA} = \mathbf E \mathbf D^{-1/2} \mathbf E^\top = \mathbf C^{-1/2}.$$
One defining property of ZCA transformation (sometimes also called "Mahalanobis transformation") is that it results in whitened data that is as close as possible to the original data (in the least squares sense). In other words, if you want to minimize $\|\mathbf X -  \mathbf X \mathbf A^\top\|^2$ subject to $ \mathbf X \mathbf A^\top$ being whitened, then you should take $\mathbf A = \mathbf W_\mathrm{ZCA}$. Here is a 2D illustration:

Left subplot shows the data and its principal axes. Note the dark shading in the upper-right corner of the distribution: it marks its orientation. Rows of $\mathbf W_\mathrm{PCA}$ are shown on the second subplot: these are the vectors the data is projected on. After whitening (below) the distribution looks round, but notice that it also looks rotated --- dark corner is now on the East side, not on the North-East side. Rows of $\mathbf W_\mathrm{ZCA}$ are shown on the third subplot (note that they are not orthogonal!). After whitening (below) the distribution looks round and it's oriented in the same way as originally. Of course, one can get from PCA whitened data to ZCA whitened data by rotating with $\mathbf E$.
The term "ZCA" seems to have been introduced in Bell and Sejnowski 1996 in the context of independent component analysis, and stands for "zero-phase component analysis". See there for more details. Most probably, you came across this term in the context of image processing. It turns out, that when applied to a bunch of natural images (pixels as features, each image as a data point), principal axes look like Fourier components of increasing frequencies, see first column of their Figure 1 below. So they are very "global". On the other hand, rows of ZCA transformation look very "local", see the second column. This is precisely because ZCA tries to transform the data as little as possible, and so each row should better be close to one the original basis functions (which would be images with only one active pixel). And this is possible to achieve, because correlations in natural images are mostly very local (so de-correlation filters can also be local).

Update
More examples of ZCA filters and of images transformed with ZCA are given in Krizhevsky, 2009, Learning Multiple Layers of Features from Tiny Images, see also examples in @bayerj's answer (+1).
I think these examples give an idea as to when ZCA whitening might be preferable to the PCA one. Namely, ZCA-whitened images still resemble normal images, whereas PCA-whitened ones look nothing like normal images. This is probably important for algorithms like convolutional neural networks (as e.g. used in Krizhevsky's paper), which treat neighbouring pixels together and so greatly rely on the local properties of natural images. For most other machine learning algorithms it should be absolutely irrelevant whether the data is whitened with PCA or ZCA.
A: I'll add the following plot to illustrate visually the difference between PCA-whitening and ZCA-whitening : the only thing you need to understand is what a rotation matrix is (aka orthonormal matrix), and that PCA-whitening and ZCA-whitening are just one rotation appart.

*

*First plot is the raw data, along 2 arrows on X and Y axis, and a circle to better understand the transformations.

*Second plot is PCA-whitened data, and the same transformation is applied to the arrows and circle points

*Third plot is ZCA-whitened data


You can then notice that :

*

*Covariance matrix is identity matrix in both PCA and ZCA cases

*PCA-whitened and ZCA-whitened data are indeed a rotation appart (rotate the second plot about 60° countclock-wise and you get the third plot)

*ZCA-whitened data has an orientation similar to that of the original data (that is red is basicaly on lower left side, and blue on upper right side). We say that ZCA-whitened data "ressembles" the most the original data. On the hand, PCA could have had any orientation.

Also, I found Optimal whitening and decorrelation, Agnan Kessy, Alex Lewin, Korbinian Strimmer (arXiv:1512.00809) to be a great ressource on whitening.
Disclaimer : plot image above taken from PCA-whitening vs ZCA-whitening : a numpy 2d visual
