You can use netstat -Wplunt
to get a list of every process listening on TCP or UDP ports. This will list a bit more than you want to know about. You can ignore all of the ports bound to ::1
or 127.0.0.1
since those are only accessible to the server itself. The rest are possibly reachable from outside.
How to test the firewall rules is a separate question. I don't know a tool which is quite ready to use for that, but that question has been asked before, and there are some suggestions on how it could be done.
Running a port scan from outside isn't going to give you the most useful data you could want. To the outside world a port which is blocked by the firewall should look the same as one which is open in the firewall but the server isn't listening. This means you need to make two configuration mistakes before it will be visible to the external port scan.
If you configured either the firewall or the server correctly, the external port scan will never reveal the configuration mistake you made in the other place.
That isn't to say an external port scan is entirely useless, but in your standard procedures, you should focus on the two layers separately. A one-off port scan can easily be done from an internet connection at home.