The tl;dr is it's metaprogramming made extremely convenient. In other languages metaprogramming might involve regex to parse string representations of code, perhaps string interpolation, and eventually pass strings to eval() or similar. But since lisp code is its own data structure (not just a string as in other languages), the ways of interacting with and altering lisp code programatically are every bit as robust as the methods for altering any other data structure (like a list or array).
For obvious reasons, I'm proceeding with caution, as some practices are best exercised judiciously or infrequently (or never e.g. ruby continuations).
But my early thoughts are that now that I know of this concept it seems odd that it's not feature of every programming language. I guess languages can still be highly productive without metaprogramming as a first class citizen. And, funnily, it's probably a good thing if tools like metaprogramming (and properties like homoiconicity) are a not obvious first choices for solving problems.