I have about 30-40 esp32 / esphome type devices running. Typically to flash or update a device, you would plug it into your usb port.
esphome can also be flashed "OTA" which just means compiling your project locally, then pushing the binary over tcp/ip and giving an instruction to install it.
With https://github.com/esphome/device-builder you can run a network of multiple esphome builders so you can update many devices at the same time "OTA" (TCP/IP).