To watch tournament matches ingame you need to buy tickets to watch them in the dota store, but from time to time tournaments don't require them, for example dreamhack was viewable without ticket. Otherwise you have teamliquid.net, you might want to register and set up displayed streams to dota2 only, then you have joindota.com, which still feels rather buggy and I personally dislike own3d streams and lastly you have gosugamers, but I have never used those, so I can't give my opinion.
For casters, look at Tobi Wan's stuff, he's the Day9 of Dota2, then the stuff produced by The GD studio and from time to time, you can see pros like Puppey, Merlini or EternalEnvy cast or cocast some matches, which is probably the best.