I wanted to re-open this to help clarify how snippets works.
In brief: They are always loaded on the front-end when assigned to the Site being viewed. They are not always evaluated.
The magic, as it were, occurs in the template library. You load a page and a single query gets all the snippets. The snippets are merged into the global variables array.
Then a find and replace occurs for the snippet name. Even if you have embeds in your template, there is only one query to grab the snippets.
In terms of queries and evals, there is not that much of a hit. If you had an extremely large number of very complex snippets, you might see some extra memory usage; but there’s not all that much code going on here, it’s basically a find and replace.
If you took the exact same large number of complex snippets and turned them into embeds, you would see a much heavier hit.
This is why we recommend Snippets over Embeds unless you need to do something such as pass variables. Snippets are treated exactly as if that code was directly in the template, whereas embeds are treated as entirely separate entities. Embeds are absolutely “heavier” than snippets.
Does that help?
[Edit to Add] To clarify what you see in the debugger, the list of snippet variables is put into memory, but each snippet is not run unless it’s in the template itself.
And one more clarification: Snippets should have no impact on the CP as they are not read or executed in the CP.