ESP8266 ICSP design: which circuit design guidelines to avoid fails/damages?
First you need to understand which and how these GPIOs are used. You can also check this. In practice, for normal operation and boot from the flash memory, GPIO15 should be LOW, and GPIO0 and GPIO2 should be HIGH at start-up. When you want to load a new image, all you have to do is pull GPIO0 to LOW state during startup, while the two other GPIOs remain as previously, and then the ESP8266 is ready to receive the program over the UART interface.

Additionally, CHPD should be HIGH at all times, otherwise the IC will not run at all. CHPD stand for "CHip Power Down" and although it is badly named, it is active low.

Now, to bring the ESP8266 in the start-up mode which is necessary when you want to program it, you either have to remove power and apply again, send a LOW pulse on the RST pin or send a LOW pulse on the CHPD pin.

Thus, the pull-up/pull-down resistors that you mention should be put on the main PCB. They are, anyway, necessary for the normal operation of the board (like the pull-up on the CHPD pin). Do not rely on the internal pull-up/pull-downs that may be present in the IC.

From the above you can also see that basically only GPIO0 and the UART interface are really necessary for programming the ESP8266. There is no need to use GPIO15 and GPIO2. And the CHPD could be used to reset the IC, but this is not necessary, since you could do the same by removing and re-applying the power supply.

From these pins, I think only the UART interface should be looked closely in your case, since you have it connected to another IC already. If I were you, if I wanted to be 100% sure, I'd probably use some way of interruption (e.g. jumpers or switches) between the ESP8266 and the GPS module. During normal operation you will keep the two ICs connected. But when you want to load a new image, you will need to interrupt this connection so that there is not interference from the GPS module to the signals from your programmer that could make the loading process to fail.

One last friendly advice! Before doing your PCB, just test the circuit you want to implement on the breadboard and confirm it works or do the necessary modifications!