Summary: This type of high-level learning is exercise for your brain, but not necessarily a list of things that you should feel obligated to use in your daily life. It's similar to going to the gym - it's really good for you and can improve your productivity and health, but that doesn't mean that you should be trying to lift desks over your head in your day job. Unless of course your day job is lifting desks! :)
Use of high-level concepts in day-to-day work has some disadvantages, the biggest one being that it's not understandable to your weaker programmers. Programmer aptitude varies from situation to situation, but in most jobs there's a good chance that the maintainers of code you right might not have read the same books as you. They might not even read programming books (or programming websites) for fun! That's why it generally makes sense to program to the least common denominator. It's exciting to make use of complex ideas in programming, but it's important to keep in mind that you're writing code for an audience, and that audience is composed mainly of people who are not you.
Your example of template meta-programming is a really good one. The fact that the C++ templating system is Turing-complete is really cool and interesting, and you can do some really fun stuff using it. Learning about template meta-programming has to help you become a better developer in some respects. However, this doesn't necessarily mean that you should use template meta-programming consistently. One reason is that if you make a small syntax error in a complex piece of C++ template meta-programming code, the error messages from the compiler are often difficult to interpret. That's a really big downside for using template meta-programming in The Real World, and pragmatism is something that you should keep in mind as you learn more far-out concepts.
I think that a lot of these concepts are mostly academic ways of making yourself a better coder. Another example is the resurgence of functional programming techniques in languages like Python. The popularity of functional programming doesn't mean that everyone should use LISP for every project from now on, because that's not practical for many businesses who have infrastructure investments in other technology and LISP is different enough that it might terrify the average coder. However, learning how to code in LISP can help you write code in other langauges that is:
- more elegant and concise
- easier to read
- more maintainable over time
I think this type of learning mostly academic, but the impact on your performance in your daily life can be very profound. Writing this answer made me think about Steve Yegge's article about Practical Magic, where he talks about the value of understanding how the tools you work function. I think that's a related but different topic, and people might enjoy reading his article.