Zum programmieren gibt es 3 Wege:
1) IC in Porgrammierer (z.B. STK500) Stecken, Programmieren, in Schaltung Stecken
2) IC in der Schaltung programmieren (ISP): dazu wird ein 6 oder 10 poliger stecker in der Schaltung vorgesehen und damit ein programmierer an geschlossen (z.B. AVRISP, STK500,STK300,Kanda,selbstbau,...)
3) Bootloader: Die neueren AVRs können sich selber programmieren. Dazu muss bereits ein kleines Programm auf dem Chip sein und eine Verbindung zum übertragen der Daten da sein. Der Rest des Chips (ohne Bootloader) kann dann über die Datenverbindung (USB oder Seriell oder ...) porgrammiert werden. Dabei gibt es aber einigen Einschränkungen da nicht alles so porgrammiert werden kann (Fuses?). Normalerweise bleibt der Bootloader beim Programmieren erhalten, es ist auch etwas Schutz gegen versehentliches löschen vorhanden.

Wenn man eigene platinen aufbauen will, wird man kaum um einen ISP Programmierer herumkommen, den man aber ggf. auch selber bauen kann.