If you get to know ATmega16, you can then work with all mega AVRs. More or less they are the same, having some slight differences on some register names (eeprom and watchdog just came in mind). Other AVRs have more pins or more peripherals, but the philosophy is the same. If we speak about architecture, you should look into power on and reset, power reduction registers, power down and sleep modes and maybe a couple of more. If you use C, then as s_guria pointed out you needn't change the structure of your code, just the low level routines (IO, ADC, UART, SPI, I2C etc). Of course the product's datasheet is the most important to start with and in parallel you should choose a compiler.
Datasheet:
http://www.atmel.com/dyn/resources/prod_documents/doc2466.pdf
Some helpfull referneces:
**broken link removed**
ATmega16 :: AVR Freaks
**broken link removed**
As for compilers, Atmel's AVRStudio (GCC compiler) free tool is very popular. Other compilers you could look into is Arduino, CodeVisionAVR, microC and IAR EW.
Finally, attached please find two datasheets for AVR core.
View attachment AVR Core.pdf
View attachment AVR Core Summary.pdf
I think all the above give you a starting point! ;-)
Welcome to the AVR world!