Absufreakinglutely YES! Everyone who programs needs to understand pointers and indirection.
Pointers are how a large amount of data access gets done in all languages. Pointers are a hardware feature of all microprocessors. High level languages like Java, VB & C# essentially wall off direct access to pointers from the users of the language with references. References refer to objects via the language's memory management scheme (could be a pointer with metadata or just a number for a the memory table, for example).
Understanding how pointers work is fundamental to understanding how computers actually work. Pointers are also more flexible and powerful than references.
For example, the reason why arrays start at index zero is because arrays are actually shorthand for pointer arithmetic. Without learning about how pointers work, many beginning programers don't quite get arrays.
int a, foo[10]; foo[2] = a; Line 2 in pointer arithmetic would be:
*(foo + sizeof(int) * 2) = a; Without understanding pointers, one cannot understand memory management, the stack, the heap or even arrays! Additionally, one needs to understand pointers and dereferencing to understand how functions and objects are passed.
TL:DR: Understanding pointers is fundamental to understanding to computers actually work.