The names and numbers are decided by Google's marketing department. It's got nothing to do with the developers, who don't even know the name or number until shortly before it's announced: they use an internal name to talk about the release while they're working on it.
The numbers aren't real "major" and "minor" numbers like you get on most software. You'd expect minor releases to be compatible, but in fact they often introduce new features (for example, Bluetooth LE support was introduced in 4.3). Google supplies security updates on a monthly schedule, much more frequently than the marketing version changes.
Application compatibility is dealt with in an entirely different way: every time the Android API is changed, the API level changes. Each Android version (whether it's a new name or not; whether it's a new "major version" or not) has an API level. The Android developer site has some information on API level numbers and how they relate to the marketing names/numbers. It's not intended for end-users but it's quite readable.