The goal of the raster (render) process is to assign a color value to every pixel on your screen.
Multitexture:
Imagine a 256x256 texture map being layed overtop a 256x256 square of pixels. In the multitexture process, the pixels get assigned a numeric color value directly from the texture applied to it. Pixel(x,y) will get assigned a RGB (red/green/blue) value based on the texel that overlays the pixel's coordinates.
fetch color from texture -> assign to pixel
Pixel Shader:
Now imagine the same 256x256 square of pixels. Instead of fetching a RGB value from the texture and directly assigning it to the pixel, we are going to fetch the RGB value and execute a shader that will calculate a NEW color value. This new color value then gets assigned to the pixel.
fetch color from texture -> execute pixel shader -> assign results of shader to pixel
Rmember, everything in nature can be expressed with mathemetics. With the proper mathematical formula/shader, you can reproduce complicated shadows, reflections, refractions, etc, etc.
Its a tad more complicated than that, but you get the idea. As a side note, OpenGL calls them fragment shaders - they are the same thing.