Back in the GeForce2 days GPUs were not programmable, they always executed the same operations. Now recent GPU have programmable processors which the programmers can use.
A vertex shader is a program that is executed by the programmable vertex processor of the GPU wich replaces the fixed per-vertex stages of the GPU.
A fragment(pixel) shader is a program that is executed by the programmable fragment processor of the GPU wich replaces some fixed per-fragment stages of the GPU.
Shaders are basicaly used for visual effects, advance ligthing models, character animation or some procedural deformations.