nick0 You can also use snippets inside chunks (like menu snippet inside a header) and you can even use snippet inside a snippet input. This sounds stupid at first and please do not overdo this/use cache, but consider the following use-case:
We have a page with an article and the article may or may not include a gallery of photos. Using SimpleGallery we can easily implement a snippet call where if some (at least 1) photos are added to the gallery, then the gallery is displayed and if there are no photos in the gallery, then the gallery is not shown. In the case where no gallery is shows, we may want to show something else instead of the gallery (like links to other articles) to make the page not be too short. But this leads to a problem of how to display something (e.g. a chunk) when gallery is not displayed.
The way I solved this is that I call SimpleGallery again (separately from the call that displays the actual gallery), but the wrapper templates are coded in a way that if there is gallery then the snippet outputs 1 and if there is no gallery then the snippet outputs 0. This is then fed to an if snippet, that outputs the chunk if the value of the second SimpleGallery call is 0 (i.e. if no gallery is to be displayed).
This works quite well and the users do not have to worry about about changing the value of some TV to display the gallery, they just upload photos and the rest is automatic.