С теоретической точки зрения, "указатель на указатель" - это просто отражение иерархии представления данных. Т.е. по мере увеличения сложности взаимных отношений в обрабатываемых данных может потребоваться и указатель на указатель на указатель и т.д. Простейший пример - путь в графе. Список (сам по себе строится на указателях) указателей на вершины графа (которые тоже суть указатели на другие вершины). С практической точки зрения, нужно чётко представлять себе все преимущества и недостатки каждого способа работы с указателями (так, например, shared_ptr это не какая-то абстрактная "магия", а специальный объект, который добавляет удобства, но берёт за это плату в виде дополнительной памяти и дополнительных действий, скрытых в примитивных операциях).