MSDN offers a good overview and rationale for crypto agility here: http://msdn.microsoft.com/en-us/magazine/ee321570.aspx
In my opinion, if you're programming crypto, you should be an expert developing library code that application programmers use. If you're developing a library, then there is no excuse for ignoring crypto agility. IMO.
If you're an application developer - don't develop your own crypto. Evaluate and choose developed code with a good reputation that meets your requirements.