Atmega328 without bootloader
A bootloader lets you get your program into the chip without a separate physical programmer.  The bootloader has to be written to work with particular hardware, like a board that brings UART connections out to a serial port, for example.

To use the bootloader, you have to run a specific program on the host computer.  This program reads the HEX file with the code you want to program into the part, then communicates over the interface provided by the hardware and using the protocol specified by the bootloader.

The advantage of this is that if you have the right hardware, you don't need a physical programmer.  The disadvantage is that programming the bootloader into the part is a extra step in manufacturing, so the part costs more.

For the vast majority of parts sold, the bootloader is of no value.  Some production jig will program the parts.  For any serious development, there will be a programmer/debugger available, so again the bootloader is useless.

The part with bootloader is aimed at hobbyists with arduinos or hardware compatible enough with them for the bootloader to work.