That's basically config schema inheritance, like you have class inheritance in PHP.
Any type that you define can be used as by by someone else. And it is what you want to do when you extend the class (usually a plugin) for which it is defined.
block_settings itself is a type that extends from mapping and defines a few common keys, it is defined in core.data_types.schema.yml
block_settings:
type: mapping
label: 'Block settings'
mapping:
id:
type: string
label: 'ID'
...
(Multiple keys in there shouldn't exit and are for example block_content specific, but that's a bit complicated to fix now).
And if you'd provide a block plugin that would extend from example_configurable_text, then you can define it like this:
block.settings.my_block:
type: block.settings.example_configurable_text
mapping:
another_thing:
type: text
label: 'Another thing'
And you automatically get everything it defines, and what it itself inherits from block_settings.