Pointers are used to access array elements, pass arguments to functions by reference so the function can modify the original argument, pass arrays and strings to functions, obtain memory from the system, and create data structures like linked lists. Pointers store the address of another variable in memory. This allows the pointer variable to indirectly access the contents of the other variable through dereferencing the pointer. Functions can accept arguments passed by reference using pointers, allowing the function to modify the original argument.