On most of the ESP8266 boards the flash memory, a 8 pin chip, is connected to 6 GPIO pins and Vcc + Gnd. Four of these pins, GPIO 6, 7, 8, 11 are the equivalent of the SPI-bus & ChipSelect. They are absolutely necessary for communication with the flash chip.
Two extra pins GPIO9 and GPIO 10 are special functions-pins of the flash chip.
GPIO9 is connected to the HOLD pin and GPIO10 is connected to the WP (WriteProtect) pin of the flash chip. Both pins are ‘HIGH’ when the flash chip is in normal mode. To program the flash chip GPIO10 (WriteProtect) is made ‘LOW’.
It is possible to disconnect the HOLD and WP pin of the flash chip from the ESP, and connect them both to VCC. If you do so you will have two free GPIO9 & 10. This make them usable as general I/O.
Only when (re)flashing the chip (Serial or OTA) GPIO9 & 10 pins are needed to be (re)connected to the ESP again.
There are actually some development boards that do this automatically. For the NodeMCU board there are/were plans to do that to but it is not (yet) implemented.
Practically spoken GPIO 6,7,8,9,10, 11 are dedicated to the flash memory and not usable for other purposes.
Basically writen by Costo » 27 Apr 2016