Can anybody explain what fault masking is, and and what its consequences are?
From Wikipedia:
a way to ignore faults by seamlessly preparing a backup component to execute something as soon as the instruction is sent, using a sort of voting protocol where if the main and backups don't give the same results, the flawed output is ignored.
Imagine the five CPUs on the Space Shuttle, all crunching the same numbers. If one of them produces an anomalous result, that result is ignored. The other four CPUs "won the election" and "masked" (hid) the bad result.
Since you've tagged this as testing, this textbook definition might be what you're looking for
http://hissa.nist.gov/chissa/SEI_Framework/framework_17.html
An acceptance test successfully masks a bad value if a retry or alternate results in a new, correct result within the time limit set for declaring failure.
Also see some discussion here but the final answer is not too clear as an example
http://www.geekinterview.com/talk/7964-fault-masking-is.html