For this to work, when you home PC is connected to the VPN it must still be reachable on his own LAN - some VPNs won't let you do that.
If this condition is fulfilled, and if your home PC is a Linux box, the simplest way in my opinion would be through SSH. That's what I do for my own home PC.
First of all, this is not mandatory but I always configure SSH so that it will only accept authentication through a RSA certificate - this way it would be less easy to hack into your PC by brute force password guessing, as no password would be accepted. Couple this with denydns (it's very easy to set up) and it will be reasonably safe to expose your SSH service to the Internet.
You'll have to NAT the SSH port on your firewall to point to your Linux box (default 22
, but you can change it, I usually do... security though obscurity and all of that, ok, but I prefer it this way :) ).
Then, if your Internet connection at home has a dynamically assigned IP, you could sign up for a dynamic DNS service like those of dyndns.com . Many modern modem/routers support those services natively so it should be very easy to configure yours to send your own assigned public IP to the dynamic DNS service provider every time it changes. This way you'll be able to connect to your PC from anywhere through the Internet.
To connect to SSH using Android, I use the app called Connectbot, it's free and open source and works very well for me. You will have to create your RSA keys, it's very easy. For extra paranoia you may want to protect your keys with a password. Add the public key signature to the ones accepted by your SSH server (on my Ubuntu I just need to copy it in the ~/.ssh/authorized_keys
file).
Then, the last trick is to use the SSH tunnels to redirect the ports you want from your mobile, through your home PC, to your destination on the other side of the VPN. I did this before and it worked for me. YMMV obviously...
Let me know if you need more detailed instructions for any of these steps.
I hope this helps!