The Player Settings Subsystem is a subsystem created per player. It is sometimes referred to as the "setting solver" because it manages all of a player's settings.
It combines information of the settings (setting compatibility, cooperation), so that the whole becomes possible, automated, testable, and injectable. It ensures that there must be a save state to default to as well.
During and post setting registration, the registered information is tested. Various misconfigurations made by developers are detected, which are logged and prevented immediately. Examples are bad save mode values / method arguments / property configurations / infinite loops / duplicates / missing registrations. Crash? Look at the project's log for the error. This is a safety feature which helps you spot issues right away. Many details are logged.
Setting application order is figured out automatically. Settings which adjust other settings follow rules built during the registration process, preventing hijacking of the tested configuration.
It also handles loading and saving setting values with an INI file. When a player is assigned to a player profile, setting values for that profile will be loaded from INI and applied. When a profile is deleted, the subsystem deletes the saved setting values from the INI file.
The subsystem's implementation is done in c++. Blueprint users have access blueprint exposed methods and delegates.
In local multiplayer, settings which directly or indirectly have a global effect (display resolution, vsync etc.) are managed only by the first player. They are registered, but fully ignored (not applied!) and hidden for other players. The UI is adapted to this.
Unreal Engine's settings must no longer be controlled through their original managing classes, to prevent value mismatches! ("Game User Settings", "Gameplay Statics" etc.)