A bootloader is a piece of code that sits usually at the beggining of memory in an microcontroller, this means that when there is no firmware loaded into the microcontroller the bootloader will run. When the bootloader runs it will communicate externally to a PC, this PC will then send the bootloader program a hex file a byte at a time, this hex file will then be loaded into the appropriate program memory location, once the bootloader is finished doing its thing it will place a goto instruction at the 0x0000 program memory location to the start of the program it has just loaded, this means that once the program has been loaded in the microcontroller will act as though it does not contain a bootloader.
Pete