The wikipedia page for bootloader does an okay job, is focused more on pc things, but still okay.
The loader part of the word (or standalone word if you type boot loader vs bootloader, I dont know if one is right or wrong) implies that not only does it boot the system, but it also allows for loading as in a tool for bootloader or other developers to get in and change things or do experiments before the application or operating system is started, basically interfere with the boot process if desired. Otherwise it just bootstraps the system.
Understand the bootloader itself is just a program. The processor doesnt know a bootloader from a hole in the wall, it is just machine code to run placed in the right place when the power comes on or reset is deasserted.
They can serve many purposes and the ones like uboot that prep you for linux are almost or in some cases are operating systems themselves with the massive size of the source. heavy on that loader side, allowing full tcp/ip stacks to reach across networks to pull down experimental binaries. support for various file systems, etc.
the typical use case for a microcontroller is not to use a bootloader, you boot right into the application and run it from flash. which is why the flash size to ram size ratio is so high, your program is meant to live in and run from flash. read disturb and other flash problems cannot be present in those chips for them to be successful products. for in circuit programming though the trend is to have an alternate boot method either from the chip vendor themselves or always something you can add yourself using a gpio pin. strap the pins a certain way and some other code boots, a bootloader that allows you ideally to reprogram the main application in flash, in circuit. the old days you removed the microcontroller from its DIP socket, stuck it in a programmer or eraser and ultimately reprogrammed it, or wrote your own bootloader and used a gpio pin or pressed esc or something within seconds of booting (on a uart), that kind of thing.
the bootloader is as mentioned on the wikipedia page also can be and sometimes is used to put the system in a known state for the applications that follow. not really that interesting for a microcontroller, but definitely for something bigger, initialize dram and the network interface maybe enumerate the pci bus or usb, etc. stuff that would be common to any operating system that follows so that the operating system can just run and not have to do those things.
Some microcontrollers the factory programmed bootloader (often in a flash you cannot change or requires different steps than the app flash to change) only runs with pins strapped a certain way. Other solutions the bootloader flash always runs, scans the app flash and decides if there is an application there and jumps to it and/or remaps and does a soft or not complete reset. Why on the NXP I think it is the first so many words have to have a valid checksum. Others anything non-0xFF it will try to boot.
for booting linux for example the bootloader would be the one that copies the root file system over and kernel to ram then branches to the kernel. For a microcontroller though, the bootloader really shouldnt be doing that your application should if any data has to move at all do the move. the bootstrap code before you branch to main() would copy the .data section over to ram if you have .data and zero the .bss section, set the stack pointer and branch to main.
in short in a microcontroller you dont need a bootloader, if there it is usually there for in system programming/upgrades. your application runs from flash and only variables and other read/write items live in ram.