What are the practical differences between pooling types at convolution?
See Analysis and Optimization of Convolutional Neural Network Architectures for the pooling types in general.


  What is the difference between max pooling, average pooling and min pooling?


A pooling function $f: \mathbb{R}^n \rightarrow \mathbb{R}$ is a function which is very symmetric:

$$f(x_1, x_2, \dots, x_n) = f(x_2, x_1, \dots, x_n) = f(x_n, x_1, \dots, x_2) = \dots$$

So the function does not care about the order of the arguments. This is the case for $\min$, $\max$ and average.

In the context of CNNs, you apply the pooling function to each feature map independantly. The output of a pooling layer has exactly as many feature maps as the input. For each feature map, you take a $p \times p$ section and apply the pooling function $f$ to it. Usually, you apply it with a stride $s &gt; 1$ so that the output is much smaller than the input (only $\frac{1}{s^2}$).


  I have learnt that pooling is a sort of downsampling where we can preserve the locations of the original image that showed the strongest correlation to the specific features we searching for. 


This is only true if you talk about max-pooling with $s &gt; 1$. Which is usually the case. Although I would not say "correlation" but "activation".


  But what is the point of find weakest correlations with min pooling, for example?


I don't know. I have never seen min pooling even be mentioned. Where have you seen it?