Fosner, R. Real-time Shader Programming. Morgan Kaufman. 2003
Traditionally, graphics hardware was designed to render a scene using a fairly standardised process. The programmer had very little control over how primitve were rendered other than by setting the rendering mode (e.g. changing from flat to Gouraud shading). The programmer had even less control over new rendering features (e.g. phong shading or bump mapping), having to wait (hopefully) until the next generation of harware implemented the required feature. This static model of processing is known as the fixed function pipleine.
Reading: Overview of GPU operation
Shaders give the programmer more control over how the GPU processes and renders the scene data. A shader is a program which executes on the GPU and replace parts of the existing fixed function pipeline.
Shaders are intended to give grater freedom to programmers to create a unique look and style for their application.
Currently there are three types of shaders suppoted by DirectX, XNA and OpenGL; Vertex,Pixel and Geometry Shaders

Vertex shaders replace the transformation and lighting stage of the pipeline. The vertex shader is called once for each vertex processed. The input to the vertex shader is one vertex (position in model sapce), texture coords, colour, etc), the output is a vertex transformed into clip space. The other vetex properties (colour, texture coords may also be changed by the vertex shader). The vertex shader is often used to implement;
The vertex shader cannot add or remove vertices, just modify a vertices attributes. A minimum vertex shader should at least output the transformed homogeneous vertex position.
Pixel shaders are run for each pixel drawn, the output of a pixel shader is (normally) a single pixel colour. The inputs are colour, texture coordinates, scene lights and textures. The pixel shader is used to implment;
A shading language is a special programming language adapted to easily map on shader programming. Those kind of languages usually have special data types like color and normal. Programs(shaders) in these languages are compiled to the instruction set of the GPU and executed at the proper point n the pipeline.
The cababilities of GPUs is normally defined by the shader model. A shader model is a standard specification of the feature set of a GPU. An application can query the the graphics hardware at runtime to ensure that it is compatible with the selected shaders.