CPU usage is tricky -- under Windows NT, you can get your own process's memory usage with GetProcessTimes() and GetThreadTimes(), but I don't know how to read the global CPU usage yet since I haven't been able to get a usable process or thread handle for the idle process. Get*Times() doesn't work under Windows 95/98, but you can get the global CPU usage from the registry. See oshelper.cpp in the VirtualDub source code for ways to measure CPU usage under both NT and 9x.
It is possible to measure per-thread CPU usage under 9x, but it's difficult -- the KernelToy WinTop does it by loading a special VxD that activates on context switches.