In terms of a winsock tutorial I sugest two things. First if you are new to socket programing a read of Beej's network programming guide is a must:
http://beej.us/guide/bgnet/
This is not a winsock tutorial but a Unix sockets tutorial, he does make some mentions about specific function calls you need to make on windows to get it to work but the general principle is the same.
If you are a seasoned unix socket programmer then I just sugest looking at the MSDN Library:
http://msdn.microsoft.com/en-us/library/ms740673(VS.85).aspx
Under winsock references you should find a list of all the functions you can use.
A note about thread handeling:
the idea is that another thread is spawned to allow concurrency of accepting connections and recving data (as I understand it). You can use Sets of FD's which allow the same idea but efectively instead of haveing a listen thread runnign you just loop through polling to see if there is information on a socket to be read.
If you read beej's guide he walks you through the different methods including using select (although instead of _beginthreadex() he uses fork() in his example as the guide is written for unix systems)
I would try to avoid creating new threads if you can to handel connections as it can get very messy very fast, lookup the select() and poll() functions which should be able to do the job you want.
Of course if you read beej's guide its all in there.
If you need any help then you can PM me/skype me/post here in the forums and I'm sure everyone will be willing to help you out.
Socket programing is good fun ^_^