Cache states are available for the modder's convenience. Typically, you just use the default unless you need to debug something, at which point it can be helpful to temporarily turn off the cache. Cache state 2 is never really necessary. It's just thrown in with an eye to the future. Theoretically, if a mod were to become large enough and complex enough, performance enhancement could be gained by taking manual control of ScriptData synchronization.
In same file, no problem... 100% with 1% margin of error. Hey, anything is possible; you never know 100%.
Change MY_MOD_NAME to be the same in each lua file. Tho technically, it only exists for the modder's convenience as it simply makes it possible to write this...
data = load( target, key );
...instead of this...
data = load( target, key, "myMod" );
Either way, the following is always an option as well, but one better left alone.
save( target, key, mischief, "yourMod" );
ShareData is only necessary if you wish to share the cache for improved performance. Just keep in mind that it can potentially improve performance, even in a single file mod, and you'd never know what you're missing. That's because in some situations, the benefit only increases for each additional mod you run that also uses SaveUtils. So if you only ever run this one mod, then you're probably not going to care too much either way, but if someone else runs severals mods and yours is the only one that isn't sharing the cache, then there is going to be a highly variable performance loss spread across each active mod.
Hope this helps. You're definitely asking the right questions.