→What is a Shader
A shader is a programmable replacement for parts of the fixed function OpenGL pipeline, you can imagine it sort of like a "plugin" to customize rendering.
Shaders will be compiled when the 3D application starts. They will be validated and optimized for the current hardware.
To make it simple, a shader is a program that is loaded on the GPU and called for every vertex or pixel: this gives programmers the possibility to implement techniques and visual effects and execute them faster. In modern games or simulators lots of shaders are used: lights, water, skinning, reflections and much more.
We can create as many shader programs as needed (you can have many shaders of the same type (vertex or fragment) attached to the same program, but only one of them can define the entrypoint:the main() function).