The ESP8266 already has a bootloader to upload new firmware over UART. You don't need to burn anything, and you don't use SPI to program it.
AVR microcontrollers are programmed (aka flashed, or uploaded) using ISP (in-system programming) over SPI. They don't support programming over UART out of the box. To receive new firmware over the serial port, a bootloader is used. It is a piece of software that receives data from the UART and writes it to flash, overwriting the previous firmware.
Before you can do this, you need to write (aka burn) the bootloader firmware to the microcontroller. This can only be done using ISP, because
- if the chip is blank, there is no bootloader to receive the bootloader over UART
- if there is a previous bootloader that you want to replace, you can't rely on the bootloader for programming over UART either, because the bootloader would be overwriting itself.
The situation on an ESP8266 is completely different. Whereas on an AVR, ISP is the default method to flash new firmware, on the ESP8266, it is UART flashing.
The ESP8266 already has a system built-in for UART flashing (just like an AVR has a system for ISP flashing), so you don't need to flash a software UART bootloader.
There is no ISP system inside of the ESP8266, so trying to do ISP on the HSPI port won't flash anything.
Read this: A Beginner's Guide to the ESP8266