To have it update on the clients, make sure the variable is set to “Replicated”.
For your second question, which part are you having trouble with, detecting that a player has joined or displaying the new value immediately? If the issue is detecting when a player has joined, just use the OnPostLogin event inside the GameMode. Just have it cast to the GameState in order to set the value of “Number of Players”. Then as long as you used the Bind option in the widget to set “Notification Text” to equal “Number of Players”, you should be golden.