Practical/common approaches to 'using' threadsafe functions for simple shared variables?

Protecting access to simple data items of 32 bits or less on the ESP32 is only a problem across cores.
The general rule is to use core 1 only for your application and leave core 0 for the radio stuff etc.
Your options, as you have identified, is to use the operating system supplied mutex or queue structures.