This, as I said is a slightly dated site but there are some useful tools and papers on there. The most useful is the APISpy32 utility that can be downloaded as a zip file called APISpy32. This utility can be used to spy on the internal structure of applications or the operating system itself. APISpy32 gets around some of the problems of similar tools such a breaking when used with large pieces of code. APISpy32 also monitors all API calls made by all active processes. It is dated and marked as supporting Windows 9x/NT/2000 and ME but I have had it running on XP.
There is also a good paper on how spying programs work. This paper is called "API Spying Techniques for Windows 9x, NT and 2000" and covers different methods for hooking API and DLL imported functions. This is an excellent detailed paper, again if a little dated.