So floating means that the pin on the MCU is not zero nor one?
It means that the input is "undefined." Read the data sheets, they will tell you the logic thresholds for your chip. You must ensure that your input voltage is above the logic-hi threshold to be recognized properly as a high, and below the logic-low threshold to be recognized as a low.
You said we can destroy a chip if the input is floating. Why so?
When a CMOS logic input is left open and the input floats, that input may be in the "undefined" range between valid logic levels. A logic gate is really a high-gain saturating amplifier (meaning its output "saturates" to one of the rails), and when the input is in that undefined range, the amplifier may toggle very rapidly between the two rails, likely exceeding the gate's actual maximum switching frequency, and the amplifier gets hot and dies.
A lot of schematics using MCU does not connect external circuitry to all of the pins of the MCU.
Specifically to prevent that death described above, MCUs (and FPGAs, too) have internal "weak" pull-ups (and/or pull-downs) to ensure a valid logic level when the input is not connected (and the chip's I/O pins are set up as inputs). A weak pull-up is easily overdriven by valid logic levels.
But the thing is with a weak pull-up is that when an open-collector driver connected to that input turns off its driver, so the logic level can pull up to high, that turn-off time, and thus the time for the signal to go high, can be very slow. So it's always recommended to use a properly-sized pull-up resistor for these applications. Lower-value pull-up resistor means faster time to pull high, while minding that you must ensure that the driver can pull down to a valid low logic level. For 5V logic it was common to see 4.7k or 5.1k resistors; for 3.3 V logic often a 2.2k resistor is used. The exact value isn't that important.
What are we then using for debouncing?
When we use push-button or other SPST switches in logic circuits, usually we tie one leg of the switch to ground, and the other leg is tied to our logic circuit (MCU, perhaps) and also pulled up to the logic supply rail. In the normally-open position, the switch is open so the pull-up resistor establishes a logic high at the micro. When you push the button, the switch closes, and connects the MCU pin to ground. Release the switch and the pull-up resistor again establishes logic high, and just like the open-collector circuit I mention above, the time to go to that high level depends on the resistor value.
------
As for using a Schmitt trigger input: standard logic inputs have symmetric logic thresholds. For example, common CMOS logic inputs are high when the voltage is at or above ⅔ the supply rail, and they are low when they are at or below ⅓ the supply rail. It is assumed that a logic input will be driven from a logic output -- one that switches "Fast" and spends very little time in the undefined middle region.
But what happens if the logic input is not driven by a logic output, and instead does weird things like bounce around a logic threshold voltage before settling? The output of the standard logic gate will chatter and do weird things. This is where the Schmitt trigger's asymmetric logic thresholds come in. There is hysteresis on the logic input, and the gate is guaranteed to not switch between the thresholds. That is, once the input signal is recognized as logic high (going above the high threshold), the output signal will not go low or undefined if it goes below the high threshold. The signal must go all the way down to below the low threshold before the output switches.