First off, this was during Windows XP heyday. The program I used to connect to my home system was Windows Remote Desktop Connection (mstsc.exe). I entered my home network's address (given by my DNS service at the time) as well as the opened firewall port and my network password and I was able to connect. Basically, I'd start Remote Desktop, enter something like myhomenetwork.dyndns.org:12345, enter that systems, userid and password, and I was logged in.
Because I always wanted to be able to access my home system, I never allowed it to sleep/hibernate.
Yes, your external IP address changes whenever you or your ISP decides to refreh the connections, but that is what the DNS service is for. They continually tap your network to verify the IP Address hasn't changed. If it has, then they update their DNS entry to the new IP address.
At the the basic level, all the firewall knows to do is whether or not to allow traffic to pass through any particular port number. For instance, port 80 is open on your firewall. Otherwise, you would not be able to surf the web as port 80 allows for http traffic to flow through the firewall. Once the port is open, it's up to you to put in parameters which limit who and when traffic can flow through.
-Wolf sends