The only bit of information that has to go through Google is a registration check to make sure that the application that's playing the media is a registered and valid Chromecast app. After that check the receiver loads whatever URL is registered for the app that's playing and receives a payload from the casting device with whatever information is needed.
So no actual streaming is proxied through Google or anything like that. Even the request to load the player interface come directly from the receiver device (once it's verified with Google that it should load said URL). There is a "default" player app that I've never checked to see whether that's saved onto the receiver itself or if it's loaded from Google, but either way that's just a thin slice of HTML and JS, not a stream going through Google.
So, for example, you can stream from Plex and not touch Google servers at all.
https://chrome.google.com/webstore/detail/videostream-for-go...
Exactly how this works is up to whoever writes the cast apps that you're using. APIs are over here: https://developers.google.com/cast/docs/developers
So it would seem like handoff to the Chromecast works really well. My TV supports Miracast and that does not work as well as the Chromecast does.