Level versioning is quite simple, everything is handled automatically. All you need to do is upload a map with the same name as an existing one. The level's author and the admins have access to upload a new version of a a map. This is the basics of how it works.
Let's imagine we have a map named mymap.
If you upload it, and then don't upload any more versions, it will just be known as mymap. It will be downloadable as mymap.zip.
If you upload it again, with the same name, then things change a bit. The NEW version will be known as mymap(v2) and will be downloadable as mymap.zip. The “..levels/dl/mapname.zip" file will always give you the most recent version of a level. The OLD map however, will now be known as mymap(v1), and the old zip file will be available as mymap.1.zip.
If we upload yet another version, the same happens. NEW version: mymap(v3) and mymap.zip. The OLD version: mymap(v2) and mymap.2.zip.
More info..
All screenshots for every map is kept permanently. There is support for limiting the range. e.g. version 10 of a map would show only screenshot #50 or newer. But currently it just shows them all, this might be changed in the future if we get a lot of screenshots for some maps though.
Records and versioning. Records are per-version of a level. Meaning records set for v3 of a map doesn't matter for v2, and so forth. It is generally only possible to set records on the newest version of a level. Although you can always download older versions of them, and in some cases it might be enabled to play a previous version, either permanently or temporarily, if there's a reason for it. Though, at the time of writing, this is not supported.