This question is related with item 16 of effective stl book which states that while using vector(lets assume vector) instead of array in a legacy
vec.begin() has type std::vector. &vec[0] has type pointer to std::vector. These are not necessarily the same type.
It is possible that a given implementation uses pointers as the iterator implementation for a vector, but this is not guaranteed, and thus you should not rely on that assumption. In fact most implementations do provide a wrapping iterator type.
Regarding your question about pointers being iterators, this is partly true. Pointers do meet the criteria of a random access iterator, but not all iterators are pointers. And there are iterators that do not support the random access behavior of pointers.