Smart groups are kind of complicated. If you've got a small install, using the defaults will generally just work, i.e. there will be temporary caching that gets refreshed when necessary.
To answer your first question though, smart groups are updated depending on the timeout configuration and/or the scheduled job, and also depending on urls being loaded.
To answer your second question - if you mean disabled instead of hidden, then the answer is that I don't think they are ever updated. But if you mean when you're looking at the groups of an individual contact - then the smart groups are only calculated when you open the section of the page that displays them.
In other words, there are quite a few clever ways that CiviCRM tries to cache smart group results to avoid long re-calculations.
If you've got performance issues, especially with a larger install, then you'll want to think about the configuration under the Administer -> Customize Data and Screens -> Search settings. In there you can set a different default timeout for the smart group cache so that your site isn't constantly recalculating smart groups. You can also set this to a very large number and then use the system job to selectively regenerate the cache as appropriate for each smart group.
BUT, this gets tricky and is often counter-intuitive about the results, you'll find quite a few discussions about optimal settings for this.
The best advice (yes, not your question) is that if you're having issues, e.g. with slowness due to caches being rebuilt, then the first thing to do is to get rid of unused smart groups. A couple of smart groups that include all your contacts (e.g. all individuals) can really take a long time to regenerate for a large number of contacts.