Have you looked at the data sheets from Atmel? I use the Tiny series, but guessing the main differences would be flash and pin count, max clock speed.
I looked into the ATMega16 a while ago, only because it was the smallest to support JTAG interface. Didn't think it was something I really needed for the size or price.
Atmega16 and Atmega32 mainly different in the flash,eprom,ram capabilities. Basically instruction set, peripherals almost same. There might be small changes in peripherals. I normally use atmega32. atmega 16 have 16kb flash and atmega32 have 32kb flash.See my projects on atmega32 http://avrmicrocontroller.googlepages.com/introductiontoAVRmicrocontroller.html
If you are searching for a good microcontroller, then better go for 32bit arm, since you know 8051.