Most of my recent project are built using shaders. They allow me to execute calcuations on the graphics card, as well as accesing powerfull 3D libraries. Using shaders may be more efficent in terms of processing power, but it comes with some disadvantages. Values can not be cached, other than using RGB images and it's more diffcult to debug a code, since values cannot be written in the compiler.
GLSL is an advanced version of OpenGL. OpengGL is used in almost every graphical application. GLSL allows the developer to acces the render pipeline on the graphics card, and therefore opening up more possibilities.
Working with compute shaders is comparable to CUDA. Compute shaders allow to efficiently use the GPU. This version of processing data can be way faster than simple CPU calculations, since the GPU has more processing units. However, it is harder to properly set up a compute shader system.