I'd like to build a barebone ATmega328 system (no USB port, no voltage regulator, etc.).
To programm it, it would be nice to have some piece of hardware like this:
USB <-> 28-pin socket
Where I can plug in my microcontroller, programm it (with the Arduino IDE), remove it from the socket - and place it on my final board.
Unfortunately I haven't found such a piece of hardware so far. Strange, because imho this is quite a common problem.
Plan B would be to get a USBtinyISP, build my own board with a 28-pin socket where I connect the necessary pins of the ATMega (MISO, MOSI, RESET, SCK, VCC,GND) to a 6-pin socket for the programmer.
Have you looked at adafruit.com? They carry a kit which is basically a protoboard shield with ZIF (zero insertion force) socket to do just what you want.
I don't find programming on board (in system) a problem - I just build an ICSP header and an FTDI header onto my boards so that a programmer can be plugged on for fuses/bootloading, and a USB/Serial module (FTDI Basic or equivalent) for serial download/debugging.
Or make the needed pins accessible somehow so that an adapter cable can be plugged on, for example this board - has FTDI header, but bootloading is done with an adapter from the programmer to the pins.
Having to plug & unplug chips onto project boards to reprogram them for every little software tweak gets to be really tiresome during hardware development, and is hard on the IC legs, leading to damaged pins eventually.
You only need the ICSP header, and can upload the bootloader, set fuses & upload your code with a single programmer. I personally use the Atmel AVRISP MkII for everything, but other programmers work just as well.
Simply power the AVR chip and plug the programmer into the ICSP header and either burn the bootloader or hit the upload button to load your code.
However, you probably want to be able to use the Serial monitor, so you'll need to have some sort of header to connect to serial - and at that point, you might as well make it the proper FTDI pinout so you can program it normally.
(1) ICSP: Set fuses, burn the bootloader, upload Arduino sketches.
(2) FTDI: Only upload Arduino sketches. Burning bootloader and setting fuses not possible.
(3) FTDI-USB cables: FTDI is for serial communication (e.g. helpful for debugging). The FTDI-USB cables that are out there are basically only USB to RS-232 adapters that connect to a FTDI header.
(4) Programming Arduino Boards: Boards like, for example, the Uno can be conveniently programmed via the built in USB port, because this USB port does internally the same (serial communication) as the FTDI header.
The "FTDI" cable is merely one form of USB to logic level serial adapter. The format of its six pin "Dupont" connector has been adopted as a useful standard.
Any other USB to "TTL" adapter (Note: despite misleading descriptions, these are not RS-232, you do not want RS-232 levels) will do the same job though not all offer, or correctly offer the "RTS" signal necessary to perform the "auto-reset" function to facilitate serial uploading, so the reset must then be performed manually.
In fact, not all genuine FTDI cables provide the same functionality, so the interface chip model is not the critical point. This one will work just fine (with the 3.3V terminal not connected - you make up a five wire Dupont female-to-female cable and choose whether to use the 5V or the 3.3V).