It's for deleting data on the heap which was allocated by new. The data is accessed through a pointer, yes (Think of it as a handle to the larger data). Modern C++ best practices rarely have the user using new/delete -- use standard library containers instead, like std::string, std::vector, std::map, std::unique_ptr, etc.
Note that delete doesn't actually delete the pointer variable. What it does is frees up the memory that that pointer is pointing to, if that memory was allocated by new (as Ganado says).
The pointer itself will still exist, and will still contain the same value.