MOSFET Gate protection
The second circuit may blow-off either the BJT or the zener (or both), if 12V_IN actually is larger than 15V...

You must add a resistor as shown here:



To answer your question:


The most reliable way is the zener, provided that you put the resistor as indicated.
1k not only is enough, but might be unnecessarily low, if you don't want high speed switching. Much larger values (>>10k) can be used if you are going to use this circuit to power on/off some devices in your system.
Voltage does not flow. There will be damage if you apply a high voltage (i.e. higher than the voltage supply of your MCU) to a GPIO pin or if you exceed any voltage rating of your MOSFET.
If \$V_{GS,max}\$ is 20V, then you should make sure that this voltage is not exceeded. You can't use a 20V zener (Zeners, like all components, have some tolerances). Your 15-V zener is ok, but also a 10-V zener would be ok.