how do you mean unprotected? you can run it through an obfuscator if you're planning on distributing it (although even that isn't 100% secure). generally yes, you're right though. grab a program like RedGate reflector and you have a fairly good view in to the code. i rarely program anything that gets released to people outside of my immediate colleagues though, so it's generally not an issue for me personally.
i understand the OS restrictions as a theoretical argument, however my counter to that is two fold. most organizations in real world business run windows. i haven't met a client yet consulting that doesn't have at least a few windows servers. so if you ever need to go get a legitimate company having a strong background in .NET technologies does have its rewards. the other side of my point is that when you're making BHW software for yourself you have complete control over which OS you use, and in recent years windows hosting has become insanely cheap (thank you virtualization!). now strictly from my experience if you're making some form of scraper, ewhore app, etc... i like to run as a windows application. it's easier to manage and you don't need to worry about postbacks, server downtime, or any other of the issues associated with an RIA.
now of course this is all one man's opinion. i always advocate doing what makes sense for your particular situation and your skill set. if you have some background in java, use that. if you know php really well, go there. but if you're starting from scratch i usually like to steer people towards .net. the IDE is rather friendly compared to others, the community support is excellent, and the framework is robust and proven. plus you have the ability to leverage the same framework in either C# syntax or VB.NET which gives you some good flexibility to use the syntax that clicks the best with you.
as far as what google, etc use, they have the luxury of a large resource pool and business supporting a highly structured development process. where as most of us BHW are losing food off our table each day that an app goes uncompleted. the rapidity and subsequent stability of my development is what keeps my revenue streams flowing.
i ramble about this stuff a lot on here, but i guess it can really all be summed up by what will get the job done in the best way for the individual. to the OP, hit up google and look at the pros and cons of the platforms you're considering. take in to account operating system portability (if that is a concern for you), rapid development capabilities, ease of the syntax and framework (if applicable) that you will be using, etc etc.
as a very smart man that i always quote likes to say: "a language is a tool, and not a destination."
cheers.
-edit-
if you're green to .NET or OOP in general here is a post i put together with lots of good links for getting started in the language. this is also worth a look if you're junior to intermediate. there is some good info linked from here:
Code:
http://www.blackhatworld.com/blackhat-seo/visual-basic-6/15877-visual-basic-tutorials.html#post1981680