All developers need to have there own working environment. All working in the exact same code base is ridiculous. Where I work we have our own workstation (with whatever OS you choose) and several virtual machines each for work. We then simply mount drives from the virtual machines onto or local machine or shell into the virtual machines and work.
Currently we host our code within a subversion repository. Though myself and another developer use Git to commit to subversion.
As for exposing development machines to clients. I guess it depends on your infrastructure, but most places would use a staging server for such things. We don't build web apps so don't really have an issue using only use a single staging server for everything (our sales reps can access and show clients). Some places however might have a staging server per developer - but I guess that is less common.
So, to reiterate. I have Git installed locally but work within my own remote repositories which are mounted locally. I then push to subversion (you guys could just as easily push to a central Git repo).
I would recommend taking a look at Gitolite if your going to host these repos internally.