Just another integral data type which supports not only arithmetic (adding or removing an integral value), but also "dereferencing" which means getting a value of the pointed-to type at the pointed-to address.
The quantities added or removed in arithmetic operations are the same as the size of the type that is being pointed to.
It's incorrect to call a pointer an integral type. It doesn't behave like an integer (you can't add two pointers together). You can't even subtract two pointers from each other unless they point into the same array (or one element past) without causing undefined behaviour. You can't even reliably convert a pointer generally to an integer and back again unless it's a void *.
Strictly it's not an integral type as you point out, but for the purpose of introducing a beginner who might be afraid that there is "deep magic" involved, it can be a helpful comparison.
Subtracting two pointers yields ptrdiff_t which is not a pointer type in itself.
The quantities added or removed in arithmetic operations are the same as the size of the type that is being pointed to.