There seems some confusion. Let me clarify. (1) ESD usually destroys components when a human handling the components (a) before the component is inserted into the circuit, AND (b) the human is not earthed and he at the same time carries electrostatic charge. If your components are already in circuit, then there is no ESD problem. / to continue, ...
Perhaps you are talking about two other things: (1) power mains surge. When there is a black out because of mains overloading (what you say "over consumption", too many air cons say) tripping over MCB. And when everybody switches on/off at the same time afterwards, there might be surges/spikes from building's nearby sub station. These spikes might be over 220V's peak and resets the Rpi. Usually there should be no harm to Rpi because it gets only 5V power from adapter, not directly from mains, / to continue, ...
And there is another thing called "back EMF". If you are using Rpi to control inductive loads, like motor, solenoid or fan, perhaps by using 5V relay or SSR. Then when switchin off (a) the relay, and/or (b) the motor or solenoid, there might be a back EMF which is a voltage spike, sometimes a couple of time of the original power supply, causing current flow back to the Rpi's circuit. This back EMF is usually minimized by using (i) "flyback" diode, (ii) optoisolation circuits. But the spikes might travel through the ground lines and trigger/reset the Rpi. / to continue, ...
And "latching up" is another thing. Take Rpi for example, if one Rpi GPIO pin is in input mode, and the GPIO pin is connected through a series resistor to a 5V source. Then there is a 5% chance that "latching up" might happen, frying the Rpi's GPIO pin circuit, or shortening the Rpi's life. / to continue, ...
To get a rough idea of "latching up", you might like to read my answer to the following question: (1) "Rpi3 might have been fried by wrongly connected DHT11 temparature sensor - Rpi SE Latching up Q&A":
raspberrypi.stackexchange.com/questions/96560/…. Cheers.
some random comments. (1) If you are using MCP23S17, then you are using Rpi's MOSI, MISO, CS to talk to MCP23S17. If what you are referring as GPIO, are MCP23S17's GPIO pins, then don't worry, because any spike, back EMF stuff will first fry MCP23S17, and Rpi hiding behind should be "safe". (2) Usually when a Rpi or MCP23S17 GPIO is in output mode, and you want to protect it from shorting to ground, or shorting to another GPIO output pin and so they are fighting each other, then the usual trick is to use a series resistor, say 330R or 470R. / to continue, ...
Using 10K is OK if your GPIO is to control a MOS device with high impedance input. But if the device is BJT, then the biasing resistance is usually 220R to 1k, then using 10k series to protect GPIO is a bit overdoing. Just casually talking aloud, my apologies for the typos. Ah, bed time. See you tomorrow.
Ah, I forgot that your Rpi also uses GPIO pins to set the address pins (A0 to A2) of the MCP23S17, but that should not cause any problem. A safe way is just tie those A0 to A2 pins direct to Vcc and/or Ground. Cheers.
(1) One more thing, about the MCP23x17 reset pin. When playing with MCP23x17, I found that the chip from time to time go crazy, and I need to push the manual reset button which I install because I find very useful in debugging. I do suspect that MCP23x17 is very noise sensitive, so might go crazy if your SPI/I2C connecting wires are very long (> 60cm). (2) Another thing is that I find it a good idea of not connecting MCP23x17's interrupt pin direct to Rpi. Instead you use Rpi to loop the MCP23s17 interrupt status registers. Cheers.