We cannot prove with absolute certainty that we have not made any mistakes in our meta-reasoning, but if we truly formalize it in some foundational system, we can write a computer program to check our formalized proof, and be 99.9999% sure that our proof is valid in that foundational system. Whether we believe that that foundation makes sense is a separate issue.
The remaining 0.0001% (probably much less) is reserved for bugs in our program and glitches in computer hardware and so on.
To answer the second question, it depends on whether you believe ZFC makes sense. Almost all set theorists do, of course, but some logicians are more wary. That's why it's sometimes worth to see how weak MS can be to achieve some meta-theoretic results.
For example, a weak system called ACA (that only deals with natural numbers and sets of natural numbers) can prove a reasonably direct translation of Godel's incompleteness theorems for every computable formal system that can reason about basic arithmetic. So if one doubts the incompleteness theorems one would have to doubt ACA too!
But you probably shouldn't bother too much about these for the moment. =)
Just reason along with Hannes and see whether you buy his arguments.