That's a lot for one question... Nothing you are looking to do sounds unreasonable. Keep in mind, the VM will only be available externally when both the windows 7 and the ubuntu vm are running. When you run a VM, both the Host (windows 7 in your case) and the Guest OS (the ubuntu) need to run simultaneously. This means you will have to have enough CPU to run both and RAM memory (probably need at least 2GB for both to be comfortable).
For the VM, I recommend you try VirtualBox to host the VM. It is free for individual use. Get it here: https://www.virtualbox.org/
Install the virtualbox software on your windows 7. Then you will need to download the ISO for the ubuntu that you would like to use. Basically, you will need to go into virtualbox and start a new VM. Choose linux + ubuntu for the type of guest and then you need to set your ISO to mount as a CD drive. Start the VM and install Ubuntu. Plenty of tutorials are out there on that.
For the non-static ip issue, you could try DynDns. They associate a subdomain of one of their domains with your server. Then you run a small daemon on the ubuntu that periodically updates Dyndns with your current IP address. Then when someone accesses you dyndns address, they get sent to your server. I have used it successfully for a number of years now. I think they let you set up a few subdomains on a free account.