What's the purpose of the type "block_settings" in schema.yml files?
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.