It depends on what you consider "necessary". There are things you don't need to run the machine, but when it comes time to repair or troubleshoot a problem you'll have a hard time doing without.
I'm also wary of such a vague requirement. For example, the Print Spooler service is hardly necessary for running windows... until the client decides to add a small printer to the machine (ie, for something like job tickets or labels) and suddenly comes back complaining to you because it doesn't work. SuperFetch is not necessary to run Windows... but you'll perform better with it turned on. Every thing in Windows has a purpose. You can't go turning stuff off without understanding what those purposes are.
Is it possible the client's goal is to just ensure you don't ship a bunch of bloatware, like you see with the major OEMs? If so, I might go just one step further and make sure the games, Windows Media Sharing Service, and Wireless Zero are disabled and leave it at that.
In regards to your edits/comment, I'll re-iterate that I'd be wary of this unless the client (not your or I) is willing to be a lot more specific in what they consider necessary. If they have done so, you need to share that information in the question.
But there are some things we can look at to at least get started. You can turn off Windows Media Player Network Sharing, possibly the print spooler service if you know that won't be a problem, Wireless Zero if you know this is a wired network. The timeThere are some other discovery services, but we have no way of knowing if they're using those. You can also turn of Windows Update, but personally I consider that essential if you want the machines to stay working... which again highlights how this is a matter of preference. Also, you can turn off the updater for any third party software (such as Acrobat Reader) they might need.
For CPU time, look at anything that has a systray icon as suspect. Also, video and audio device vendors sometimes include a service with their drivers that don't add much value.
rthdcpl come to mind, but there's too much variation to really list everything out here.
For RAM, there's no need to do anything. Windows has a per-process RAM limit, and so the specific apps are already likely using that to it's full potential.
I'll add that all this work won't really gain you anything. Most of these services start up and go idle until they're called for. In this state, they use no cpu and any RAM get's paged to disk, so use effectively zero system resources.