These are hooks to: 1. control whether contract checks are run 2. allow 3rd party tools to intercept and reintepret the results of running contracts.
For high-level intro to how type checking works in rustc, see the type checking chapter of the rustc dev guide.