1. Указатели нужны, в общем, затем же, что и в чистом С.
2. Лучше использовать ссылки, да.
3.
Vector не вместо указателей, это вообще разные вещи.
4. С динамической памятью работать через new/delete, эти операторы работают с указателями. В этом случае они нужны.
5. Матрицу вы можете представить, например, как
Vector< Vector< double > >