A configuration schema can contain not only configuration objects, but also complex defined types. For example, in the core.data_types.schema.yml file there is:
# Mail text with subject and body parts.
mail:
type: mapping
label: 'Mail'
mapping:
subject:
type: label
label: 'Subject'
body:
type: text
label: 'Body'
This allows any other configuration schema to define its type as Mail and have it interpreted as that mapping without having to repeat it.