I see some posts that Salesforce supports all the back versions of its APIs.
Which is it? Which versions are still supported today?
I believe that an API level being unsupported just means that Salesforce won't release patches to fix issues for that version, not that you can't use it.
If you go to your organization and try to edit the version of the Salesforce.com API used on a class, it will show options that range from API 10 to API 40 at the moment.
Same thing goes for Visualforce. But the levels are a little different. Visualforce is supported on APIs 15 to 40.
Salesforce has the option of deprecating/removing an API after three years (the minimum amount of time the API is supported). Before they do this, they will post an announcement and contact customers that they detect are still using an older API version. There are different cutoff values for different features. Features that did not exist in a particular release may not work in older API versions (and generally do not). For example, the only valid values for the REST API are versions 20.0 and greater.
Generally speaking, when developing new code, you should choose the latest API version, or preferably the same API version as the rest of your code (whichever makes more sense). Using the oldest possible version increases the odds that you'll need to do maintenance sooner rather than later. Until/unless you get a notification about a deprecated API, feel free to use whatever version makes the most sense for your scenario, and remember to read the release notes for each version as they come out so you won't be blindsided by deprecated APIs when/if they happen.
Anecdotally, I've been working with the SOAP API for more than 10 years now. In that time I've only ever seen one notification of older API versions being deprecated - Knowledge Article: SOAP API Legacy Versions Retirement. That was for API versions upto v6.0. And note this isn't even going to happen until Summer '18.
However, as a rule of thumb, try and keep everything one a consistent API version within the last 3 years so you don't get a big shock if they one day decide to force things onto the newer API versions.
You might find that this recent API retirement is a test bed for Salesforce. I.e. Getting themselves setup with processes to retire older API versions. Identify affected customers, etc...
Of course, that is only conjecture on my part.