Basically it extends the amount of problems you can solve within the language. But be careful, with power comes responsibility, and I am pretty sure in an environment wher macros are just available to any developer, you have a lot of opportunities to write unmaintainable code.
I explained some basic metaprogramming stuff in my article on NimYAML. Actually, NimYAML as a whole is a good example of metaprogramming usage, because what is does is not doable in most other languages (though some „cheat“ by using reflection, which is inferior).
emerald is another project of mine which makes extensive use of metaprogramming. Actually, I initially wrote that to test Nim's metaprogramming capabilities.
For snippets, a template usually suffices, you do not need macros for that. It is important to recognize when you do not need macros. The actual use-cases for macros are rather rare, because you should always use the least powerful tool that can do the job, and that mostly boils down to generics and/or templates even for complex problems.