I've been programming for almost fifty years now, and programming Python for almost twenty years.
So I have used all these features, except one: metaclasses. I've even written code with metaclasses, but each time I ended up replacing it with a decorator. The decorator was just as convenient, but more, I felt it would be easier to read for my teammates.
You're generally right that these features aren't often used, though.
I use `@property` fairly frequently, partly because it's useful with `mypy` to make sure you're getting the right signatures, if you have other fancinesses and constraints.
I end up using `heapq` quite a lot, as it's really useful for priority queues and the like.
Most interesting projects have at least one advanced data structure but often that data structure is written quite early and rarely touched again.