But for the sake of readability it would be much better to simply have username@mysite.com than username@mail.mysite.com
That's kind of unrelated. You can configure a mail server at mail.mysite.com to handle mail to/from username@mysite.com. You don't need a proxy for that.
But what if I do want my services to be accessed through mysite.com directly instead of a specific per-service subdomain?
If they're all http(s) services, then that should be possible. I don't know anything about caddy, but with apache or nginx you can proxy based on path, so I'd assume you can with caddy also.
For example mysite.com/chat could route to your chat app, mysite.com/webmail route to your webmail app, etc. But this isn't necessarily plug-and-play, because depending on the app you might need to set up proxy rules for cookie rewriting, link rewriting, etc.
If you want to proxy non-http(s) traffic from 1 port to multiple destination apps, then it gets a LOT more complicated.