Supporting multiple versions of ArcGIS is relatively easy if you do it right. Basically, you need to compile your code for each supported version. We use a build server along with Jenkins and ANT scripts to automate our builds but that's a lot of work to setup if you've never done it before. Another way is to use virtual machines, one for each supported version of ArcGIS. We keep our repository in source control at the oldest version of ArcGIS that we support and do all of our development in that version. If you use Git for source control then you can create a development branch for each supported version. Do your development in the lowest version branch and push those changes to each of the other branches. Your master branch would be your release version so only push changes to it when you're ready to deploy a version. To make a build for any particular version, simply check out the appropriate branch on the VM for that version and compile. You can use other source control software of course, but Git makes this very easy.