Question: I mean, if binary code is already generated by PC, wouldn't it be possible to just take this binary code, transfer it to a specific place in flash memory via specific bus, for example Serial Wire, and it would work?

Why is a programmer usually required in an embedded toolchain?

Answer: 
A programmer is the implementation of " via specific bus,".
Some devices have inbuilt bootloaders (may be hardware or software or firmware) that allow the use of a port of some sort to load code.

Whenever a feature is included in a device that is not utilised during normal operation it adds an unproductive overhead. On very large and capable systems this overhead may be small and unimportant. On very small systems it may occupy enough program space or hardware to represent a significant degradation of device capability. When processors get into the cents per unit range every last piece of capability is worth having. (A 2 cent processor that becomes a 3 cent processor due to added little used capabilities may matter. )
Not all microcontrollers *need* to be programmed via protocols and connections designated for a debug probe or programmer device.

As an example, the STM32F446RE microcontroller has two boot pins that control if the microcontroller executes the program stored in its (main) flash memory, if it boots from its SRAM, or it it boots the program from its so-called "system memory". This program overwrites the main Flash content with a new main payload program transmitted via UART, CAN, or SPI (where the ports and pins to be used in each case are fixed and can be looked up in the documentation). In this way, the microcontroller can be programmed with a standard USB-to-UART device, via the CAN bus, and so on.

But during development, you often want to use a debug probe anyway, and using that to also program the microcontroller is often more convenient. For firmware updates in the field, the possibility to program from the system memory program can however be useful. It is not possible to overwrite the system memory program as far as I know, so the MCU cannot be bricked in this way.