As well as having reprogrammable code memory for your program, the AVR has a second memory called EEPROM where you can store user data, like serial numbers, calibration data and other information that needs to be preserved. It is accessed by instructions in your program.
AVRs also have an I/O space, which is used to control the hardware of the microcontroller and store temporary data used by your program. The hardware includes ports, ADC, communication interfaces like I2C (2-wire interface), SPI and UART (serial port), timers and watchdogs that recover from system crashes. All these peripherals are controlled from your program using special instructions. A lot of AVR code programming is about how to setup and control this hardware interface.
Kanda AVR kits, like STK200 and our other AVR training kits, use assembly language to teach you all about the AVR and its hardware setup before moving on to C programming. They also cover the hardware circuit requirements needed to interface with the AVR microcontroller, once you move beyond the AVR board supplied and want to develop your own circuits.
A final word about Arduino. This is a simplified development system for microcontrollers. It is based on the AVR microcontroller but this is pretty well concealed. It is great for developing a quick project but it won’t really teach you about AVRs or how to program them using real development tools.