As Greg already pointed out,
[the OS EULA explicitly states] that to "decompile or disassemble" is not permitted.
On the other hand, Microsoft's own MSDN magazine writes:
[...] what I consider to be the best use of .NET Reflector, which is to examine .NET Framework assemblies and methods. [...] By using .NET Reflector, you can see what Microsoft used when writing the ReadXml method of the DataSet, or what they did when reading data from the configuration files. .NET Reflector is also an excellent way to see the best practices for creating objects like HttpHandlers or configuration handlers because you get to see how the team at Microsoft actually built those objects in the Framework.
I'm not a lawyer, but I guess enforcing the EULA will be quite hard when they recommend you to break it...