Vou dar uma resposta um pouco mais teórica; as outras respostas são muito boas do ponto de vista prático. Um carregador de inicialização é um código que reside em um segmento especial da memória flash. É permitido ao código que reside nesse segmento executar Instruções de Auto-Programação, possibilitando modificar a memória flash (ou seja, onde o código do usuário reside) sem um programador convencional (ou seja, ISP de Programação no Sistema ou HVP de Programação de Alta Voltagem) como o STK500 ou AVRISP mkII.
Em princípio, o ISR (UART Recieve Data Interrupt Service Routine) faz uma chamada de função no código do carregador de inicialização que copia a imagem do programa sendo enviada serialmente no espaço do programa do usuário na memória flash. Na inicialização, qualquer programa que esteja no chip começa a funcionar, mas se dados seriais adequadamente formados são recebidos no início, o AVR entra em uma espécie de modo de auto-programação. Há alguma lógica no UART ISR que adia apenas o código do carregador de inicialização por um curto período de tempo durante a inicialização. Os detalhes são um pouco mais complicados do que isso, mas essa é a ideia básica.
A vantagem disso é que você pode comprar um Arduino, e nada mais, baixar o IDE (Ambiente de Desenvolvimento Integrado) gratuito e começar a escrever Rascunhos (programas) do Arduino, e baixá-los no AVR dessa maneira, através do USB, não menos obrigado ao pequeno e sofisticado chip FTDI IC integrado à placa Arduino.