Programming other uC's

Good question.

The reason you can program the the microcontroller (ATmega168) on the Arduino isn't because there's a hardware programming interface on the board, but because the microcontroller comes with a small bootloader program on it. The Arduino Mini comes with the same bootloader already on it, so you don't need a hardware programming interface to program it either. In both cases, all you need is something that converts the USB connection into TTL (5V) serial - which on the Arduino board is done by the FTDI chip. So if your other AVR already had a bootloader on it, you could program it with just the FTDI chip in the same way you program the Mini.

Does that make sense?