There is only one thing i dislike About vertex shaders (well, when you are going to use one for first time)...you dont have one working by default; i mean, with the fixed pipeline you already have working functions to apply multiple textures with several blend options, vertex world/view transformations, per vertex lighting with matyerials settings, etc...the basic stuff you need to render thousand triangles textured and lightened; but if you say "humm, i would like to add a wave effect...i am going to write a shader for that..." forget it, beside the wave effect you also have to code your self in the shader any function you was using from the fixed pipeline, you cant combine boths, when you switch to shaders, you have to code everithing needed for render a vertex: transformations, textures, blending effects, colors, lighting maths, etc.

Beside that, once you have one basic vertex shader coded and working for doing basic stuff, then you will want to do everithing in shaders, and none in cpu,