Technically my sites have a “branded” section of custom options in Admin menu right below the Dashboard. Option pages count and tabs count depends on a project structure. I try to limit 5-7 options for a single tab. There goes everything that is related to Client and is useful for content-managers. I even make short tutorial subpages sometimes — it’s not a proper place, probably, but it works much better there than anywhere else for some types of my users.
Most of input fields are related to special shotcodes. Some fields like phones are used by several shortcodes displaying different formats (human-readable, tel attribute, regional code nuances, iconic etc). But certainly all input is filtered, escaped etc.
Common options are loaded into that global array mentioned above. I initialize all needed custom fields and options only once, early, before outputting header. All values are stored in array and called via getter function, so each template can access them if needed.
I avoid updating option(s) from public-end, so all external user input (orders, messages, form submits) pass through another procedure with more strict validation and sometimes redirection to an external CRM by API without saving copies on site.
And I also use ACF, but for content pages only. Option pages allow to reorganize layouts for better usability. But if I make a kind of “private section” outside /wp-admin/ (rarely) ACF is pretty heplful.
Update: just notices that @raygulick wrote about ACT Options Page — I didn’t use it yet, since I have custom solution, but probably it’s worth trying. ACF plugins a very nice.