This sounds like it could be a source of confusion.
At the metal level, there is no difference between a pointer and an integer. Both are "just" numbers, represented exactly the same as electrons.
In that respect, "pointer" is just a half-way-there point on the spectrum of abstraction from raw memory bits to fully typed structs representing useful data: a slightly more useful interpretation of electrons, but by no means the best we can do.
Typed languages do their best in helping us keep the different interpretations from being accidentally mixed up. C's
*void is arguably horrible at this,
*MyType is getting better, and (for example) a
HashMap<String,<JdbcConnection<PsqlDriver>>> in Java is very abstract indeed. (I don't know Ada syntax, or I would have included a made up example in that too).
In the end though, it's just electrons, and in the end, there is a lot of low-level performance to be gained by "converting" them in zero clock instructions, just by looking at them through a different lens.
Which I guess is indeed a lengthy way of saying, that its very powerful, and thus indeed dangerous.
XKCD summarises the feeling I want to express quite well in XKCD 676: Abstraction.