In general, a bootloader is a code that executes at the instant the CPU comes out of reset until it passes off control of the system to the OS. It performs basic initialization of the CPU and sometimes some other peripheral devices, such as disk subsystems, sometimes network controllers, perhaps timers, DMA controller, video controller, UART(s), etc. Sometimes it can have an interactive component, or it might be completely invisible.
In Non-OS MCU you can create your own bootloader (basically an application) to check the integrity of the image and with some require initialization. You can also upgrade the image using the help of a bootloader application.