It sounds like you're asking simple questions, but in fact you're asking things that are a lot more complicated than you probably realize. Let's see what we can do...
1. "Versions" of HTML and CSS mean very little, since browsers are still a little ways off from treating each release properly. You don't necessarily use CSS1 v. CSS2, you use elements from each of these are that known to work better than others, and sometimes you have to use them in pretty creative ways to make them work properly.
2. I've had this debate in recent history, and I'll sum up a small piece of it here. You can't profile your visitors based on the browsing technology they use. Profile your visitors based on the type of information you're giving them, and assume they will want/need to view your information in a variety of ways, ways that go beyond IE and Netscape. Unfortunately, this can tend to complicate things from a development perspective. Once you've left the safety of IE and delved into other up-and-coming browsers, other browsing devices and browser helpers designed with usability in mind, you're getting into a reasonably steep learning curve. It's worth every second you spend learning it if you rely on the Internet for your livelihood, IMHO.
3. XHTML is the newest direction of HTML. It stands for Extensible Hypertext Markup Language (umm...shouldn't that be EHTML? ). This may sound new and dangerous, but it is actually a reduction of previous versions of HTML. It actually wipes out a bunch of tags that really shouldn't exist in the first place and makes HTML smaller, neater, tighter and more user-friendly. The tradeoff is that a lot of what you used to do with HTML is now done in CSS, so the learning must take place.
I wish it could be that simple, but it simply can't be. There are elements within CSS1 that will display differently between IE and NN. Yes, these are elements that have been around since 1996, and yes, browsers still have some trouble getting them correct. By the same token, the intent of CSS is that used properly, unsupported elements in some browsers should not interfere with the visitor's ability to use the site - everything should degrade gracefully.
I know you're looking for a magic bullet, a formula you can use that will accommodate everyone and everything perfectly, but it just doesn't exist. The answer to whether you use HTML4 or XHTML has to do with which one has the tools you require to get the job done, given your knowledge. I personally will always use XHTML1.0 Strict or XHTML1.1, along with very carefully chosen CSS elements from CSS1 and CSS2.1. This is a very efficient setup, and it can be done in such a way that older browser users are accommodated just fine. But it takes a lot of learning to get there. Any of the choices you've given can be used to get the job done. Some will get it done better than others. It's a question of what you're willing to learn.