:h local-options says:
for each buffer-local option there also is a global value, which is used for new buffers. With ":set" both the local and global value is changed. With "setlocal" only the local value is changed, thus this value is not used when editing a new buffer.
:h global-local says:
For some global options it's useful to sometimes have a different local value. You can set the local value with ":setlocal". That buffer or window will then use the local value, while other buffers and windows continue using the global value.
I am confused by how these are different. It sounds to me like if I say
:setlocal on a buffer-local or a global-local option, the setting is set for that particular buffer (assuming the global-local in this case is a "Global or local to buffer" and not a "Global or local to window" option). And if I say
:setglobal, the global setting (default for all buffers) is set, and
:set sets both global and local options.
The only possible difference I can find in the documentation (and maybe this is the answer?) is that there is special documentation around
:setlocal= for global-local options that lets you erase the local value and fall back to the current global setting. There's no documentation that indicates that buffer-local settings can be unset / fall back to a global value. Is that true? And is that the essence of the difference in these two options?