it is an instance of an iterator class. &*it is the address of the pointed item. Definitely not the same thing, even though an iterator has pointer semantics and is (was?) allowed to be a simple alias to T*.
Whether you store a std::list<T>::iterator or a T* shouldn't matter (ignoring everything else your code might do, of course), because list iterators never get invalidated as long as the item exists in the list.
However it seems like the code you posted doesn't reflect what you're actually doing, and you still didn't post the compiler error. There's no chance we can give you relevant answers in this context.