A beautiful impediment to understanding, and utterly useless.
Unless you have a tool (no thanks) which can actually check that you've named everything properly, code all too rapidly degenerates into alphabet soup. Given that you have to assume that it's probably wrong, you have to do what you'd normally do anyway.
Besides, with today's IDE's, you simply click on a variable, and it tells you all about it, without having to decode whatever unreadable mess has been placed in front of the name.
Their argument: it allows you to figure out how a variable is declared without having to scroll back to read it.
My argument: if you need to scroll back, then either you're a goldfish or your function is already too damn big to be tested or maintained.
To me, it was only ever the equivalent of "training wheels" on your bicycle (if you can remember that far back).
Once you understand how the * and & work together (which the notation aims to emphasise), you can take the trainers off and get down to some serious work.
int *pi = &i;
int j = π