Is it good practice to always remove highly correlated variables? 1- Would it always be beneficial to remove highly correlated features prior to training a model? If not, why not. 

2- Would you perform One Hot encoding where applicable, prior to removing highly correlated features ? (taking into account a dummy variable may be highly correlated with another variable)

Thanks
(1) No. For example, if you have computer vision problems, then each pixel of the image is a feature. most neighboring pixels are highly correlated.

For example, see the following image from The HASYv2 dataset: