why it has different ways to bootup?
1)Method 1 from one blog
GPIO lines are not connected. but CH_PD pulled high to VCC and RST pulled high to VCC through a resistor. I shorted the RST line to low temporaily. The setup through USB to Serial adaptor.
2) Method 2 from another blog
For the two modes we care about, the processor expects GPIO15 to low and GPIO2 to be high on boot. GPIO0 selects between the two modes we are going to discuss here. During normal operation, we would want to use a resistor to pull GPIO0 high.5 That will cause the bootloader inside the ESP8266 to read data from the EEPROM chip into the ESP8266’s IRAM and boot our program. If we set GPIO0 low, however, the boot ROM inside the ESP8266 takes over and it begins communicating over the UART. Using this boot ROM we can push our programs to the flash memory. A good way to make use of this is to connect a switch from GPIO0 to ground so you can put it into program mode at will by holding the button at power on.