After looking into all options, it seems that ApexPages.Severity.FATAL and ApexPages.Severity.ERROR are exactly the same. Is there a difference that I'm not aware of?
The Fatal level is intended to materialize errors that occur at the platform level, while the Error level is intended for errors that are not strictly fatal, which accounts for pretty much every error that we developers have control over. For example, a Fatal error might be when SOSL fails to run because the search sub-system is down, while a normal Error might be when the user types in an invalid date. In other words, you should generally be using Error, and leave Fatal alone.