I’ve been programming a little with OpenGL, but I never had to code a “vertex shader” neither I don’t understand why, before Cg was released, it was a task only suitable for people who feels comfortable programming in assembly.
There is a lot of setup information required for fragment shaders for example (tangent space transform of various vectors for example). There are also things like animations for skinning of objects and pretty much any transformation and lighting you can come up with per vertex that doesn’t match the standard OpenGL matrix transformations and lighting.