In some languages there is a difference between functions and procedures; the latter do not return values. C doesn't have procedures, only functions, so void is useful to show when a function doesn't return anything. void can also be used to declare a pointer that doesn't point to a specific type, although in C++ the need for this is vastly reduced due to polymorphism.

Have a look through the other threads in the forums to get a handle on what kind of projects others are working on and see if there's anything that takes your fancy.