Most of us just enjoy the programming...
Well, the sad truth is that until you become a whiz-kid, you won't be able to do much useful. Sometimes you'll have a unique idea for something that's particularly interesting to you… something related to another hobby, etc. But, most of us just enjoy the programming, even though someone else has done it before… probably better! I'm a "do-it-yourselfer." I build stuff with wood, I build circuits, etc. I even work on my own car... sometimes.
Most commercial programs are written by more than one programmer. Some projects are just too big. I’m pretty sure that there’s over 1000 man-years of programming time in MS Office!!! And, no programmer is expert in every area. So, one person might head-up the user interface, another the drivers, etc.
On the other hand, lots of shareware programs are written by one-person. And, if your car has computers under the hood, there’s a good chance that each computer is running a “little” program written by one programmer.
Search the board... it's a common question. The most common use of pointers is to get-around the fact that a function can only return one variable. So if you want your function to affect more than one variable, you can use pointers. Most books will show a "swap" function (where the values of two variables are excanged) to introduce pointers. With C-style strings, you use a pointer to the string so your function can "get to" all the characters in the string. Actually, in C++ you can usually use a reference instead of a pointer.
Oh, and....how are pointers to functions useful, too?