Boot Loaders are part of the program that was used to have minimum level of features, example - If you need autofirmware upgradation without external programmer, then you can write a very small program that will get data from external host via serial or anyother mode of communication, and erase the data and write the data to flash.
so that the chip can be sent by bootloaders alone where bootloader can take part of the whole program.
this is just one example. bootloader is the first part of the program that will boot.