Without the bootloader then the microcontroller will not be able to do anything unless it is programmed directly using an in-system programmier or similar. This is an oversimplification, but gives you an idea of how it works. If not then it jumps to the code already in flash memory and starts the microcontroller running. Essential it looks to see if the IDE is trying to send new code to the Arduino and if so then it saves that new code to the application area of flash memory. This runs whenever the ATmega microcontroller is powered-on or reset. The Arduino Bootloader is a piece of code responsible for running the user code and/or installing new user code. This can be created on a breadboard, but I have also designed a custom PCB shield that can be used as a dedicated programming. The video below gives an introduction to this. This is useful for beginners as it means you can concentrate on the custom circuit, but in this I will go through details of how you can install a bootloader if you buy a basic IC with no bootloader. In those I recommended buying a ATmega328p with the bootloader pre-installed. These have all being based around custom Arduino like circuits based around the ATmega328p microcontroller. In my earlier projects I've created custom Arduino Circuits, KiCAD Arduino PCB design and Model railway automation signals.
Installing an Arduino Bootloader on an ATmega328p