I think a hybrid approach would be too tedious for someone developing a website to do, in order to get the payoff of sending less to mobile browsers, but it may be worth implementing in a framework.
2) A user agent doesn't encode any information about the actual metrics of the device.
Doing layout by user agent is basically a worst-case hellhole of browser-specific codebase fragmentation. There's a very good reason why best practices have been trending away from "test for vendor class" and towards "test for agent capabilities".
What is "desktop"? An MS Surface Pro would report as a desktop browser, but it's a touch interface. You can also resize the browser window- what then?
So some client-side responsive design would still need to be used.
Which is the point. The server can't know conclusively so why make it try?
Nice emulator: http://codewithsnow.com/emulator/