Is it ok to have 100+ Global Variables?
Yup. The editor may start responding slowly while editing them, but otherwise it isnt an issue.
Should a Global Variable always be used when a Variable is used multiple times by multiple FSMs?
That's the point of globals. Otherwise you need to get the variable every time.
Should you set these Global Variables using Prefabs or have a empty GameObject with an FSM that establishes their values?
Set them in the Global Variable editor, the same place you create them.
Is there risk of using too many Global Variables causing issues later?
Not as far as I have seen. I don't see why it would. The editor may have some slowdown but it should be fine. They aren't rocket science, its just a different variable type.
Am curious to hear everyones thoughts on the matter. So far I'm around 12ish Global Variables and counting. I find that I gain much better performance establishing the Global instead of having multiple GameObjects establish a variable on Start.
12 globals is definitely nothing to worry about. I have like 15+ on my character controller alone.
Maybe some scripters can elaborate on this..
Globals: Good for working between scripts, single objects, sharing data between things easily. Can't have duplicate names in the project.
Non-globals: Good for keeping the data all local, mass produced items, generic items, duplicate names all day long across the project.
So if you had an AI on a monster and told it to change a bool when you came in range so it would look at you, and you used a global, then ALL of those monsters would do that. If it were a local variable then it would only be for that one monster that you actually came in range of. If you wanted them to act individually then you would clearly use local variables for that action.