"Real" developers do a lot of different things, depending on what works. So, to lets look at a few of these questions:
xamp, wamp, or iis?
Well, what's the target environment? If it's IIS, definitely use IIS. If it's a linux/bsd/unix environment, you can still get away with using IIS if you're intimately familiar with the differences -- but you'll ultimately need to test in an environment like the target production environment.
how do I let the client see what I'm working on?
I rarely shared my local development copy with clients -- it was often in a state of disarray, certain features half-implemented and so forth. I set up a virtual host to use as my staging/beta server. For each project, I set up a subdomain and implemented some basic password protection. Although, in most cases, my own beta/staging environment was in addition to the client's own staging site, which ran alongside the production site -- on the same server and often with a different database.
The details of how and where and how to host the development, beta, and staging environments can be up for you and the client to decide. Although, if you don't have your own hosting solution to at least offer, you'll look pretty unprofessional. So, in the very least, I'd recommend getting a cheap VPS that you can run several beta sites off of at a time. I would recommend slicehost.
And again, for your local development environment -- it's really up to you as long as you can ensure that the application will function remotely as well. If you're not doing any .NET work, I strongly recommend getting a linux, unix, or bsd box (or a Mac) -- or at least get VirtualBox running a local CentOS VM or something. And, if you're not familiar with setting up a LAMP stack and configuring apache, it'll be good to learn how to do so.