Drupal core provides its own configuration information. There is a core.data_types.schema.yml file located at core/config/schema. These are the base types of data that the core provides and can be used when making configuration schema. The file contains YAML definitions of data types and the class that represents them:
boolean: label: 'Boolean' class: '\Drupal\Core\TypedData\Plugin\DataType\BooleanData' email: label: 'Email' class: '\Drupal\Core\TypedData\Plugin\DataType\Email' string: label: 'String' class: '\Drupal\Core\TypedData\Plugin\DataType\StringData'
When a configuration schema definition specifies an attribute that has an email for its type, that value is then handled by the \Drupal\Core\TypedData\Plugin\DataType\Email class. Data types are a form of plugins, and each plugin's annotation specifies constraints for validation. This is built around the Symfony Validator component.