The more I thought about it, the more I realized that you have 2 options and I'll jot them down for you:
Option A - Easy
If possible, host your content out of your home just on different ports. So, for web, you would host it out of port 8080 and email out of port 8081, for the sake of argument. Then, on your VPS-hosted server, just configure Apache to proxy your web request to your "home server" on port 8080. No need for VPN and it's a LOT lighter in configuration.
So, if someone comes to http://www.mydomain.com, Apache on the VPS server will accept the request and reverse-proxy it to your IP address at home, http://1.2.3.4:8080
. The same concept can be used with mail as well. Now, I know for residential services, your IP address will change at some point. I would suggest you get something like DynDNS to make your IP address as predictable as possible making Apache proxy administration much easier.
Option B - Not so easy
At a high level overview, what you'll need to do is establish a Site-to-Site VPN with a product like OpenVPN. You can google "openvpn site-to-site" and you'll get back numerous examples on how to achieve this.
Once you have set up a site-to-site tunnel, it could be as simple as just providing the VPN IP address of your web server that hosts your content in Apache. Or you can abstract (my preferred) your services via proxy services but then you're getting into Option A territory. Additionally, you would want your home server to establish your VPN connections as the IP address on the VPS server will be static.
Hope this helps!