Raw ("C-style" or "naked" or "dumb") pointers aren't very useful unless you're implementing a low-level library. While you're new to C++, it is best to avoid them.
To list some of their actual uses:
The new-expression (e.g. "new Type(args)") always returns a (raw) pointer, so pointers must be used to track objects that have dynamic storage duration. Such pointers are usually wrapped in appropriate self-managing "smart" pointer types, such as std::auto_ptr or std::unique_ptr.
Pointers are used to express various forms of aggregating class relationships and various object ownership models (here both raw pointers and shared/weak/unique-ownership pointers are used, depending on class design)
Pointers are used to implement runtime polymorphism, e.g. when implementing a container of polymorphic objects. (references can be used for runtime polymorphism as well, but not when a container needs to be implemented)
Pointers can serve as "maybe'" types because they can point to an object or be null, although there are common library classes to do this explicitly.
Pointers can serve as rebindable references, which is sometimes quite useful e.g. when implementing balanced trees.
Pointers to functions may serve as delegates or callbacks, although lightweight function objects are more common in this role.
A lot of mixed C and C++ code uses pointers where C++ would use references (C has no concept of pass-by-reference, so it had to simulate it by passing pointers to functions). Also, a lot of C code uses pointers to refer to arrays and to iterate through arrays (C++ has vectors and strings instead, which can be referred to directly and which have dedicated iterator types).
This multitude of uses makes pointers confusing to learn.