I don't understand what you mean by the most efficient way to use them?
I only use threads when I need them.
You shouldn't use excess number of threads, Microsoft recommends twice as many as the cores on your processor, which you can find with GetSystemInfo.
A separate thread is usually created for callback routines to not interrupt the main thread but allow the event to be handled, so generally people use a pool of threads that act as a callback for a specific task.
But if you want to have multiple threads, each one doing a separate job, then nothing is stopping you?