Basically you are dealing with two IP addresses. One is a public route-able IP and the other is a private IP. With port-forwarding you are saying that a request that comes in on the public IP on a specific port, will then be sent to a specific private IP on the same port. So if a request comes in on port 1020 then that data will be sent to the private IP at port 1020.
Most windows computers have a firewall as well, so windows can block those requests. Some anti-virus programs can also block incoming requests. Sometimes an application will be listed as an accepted application in the windows firewall and so windows will allow communication.
A good way to test this is to put your computer into a DMZ zone. Because port forwarding is designed to pass information through a firewall, putting a computer in a DMZ zone will put the computer outside the router's firewall. This means that even if for some reason the port forwarding isn't working, it wont matter because your computer will be outside the firewall. Although it's not wise to leave it in the DMZ zone its a good way to test to see if the issue is with your application or the computer itself.