I believe you should understand TCP/IP fully, how interconnections are made, filtered/blocked fully. For starters -sT (TCP connect) is the most reliable type of connection since it completes a full handshake. NMAP output varies based on what you are scanning, whether or not the targets have filtering/firewalling. There is a simpler way of seeing what ports are opened on your systems. It's called netstat. By logging into any one of your machines, you could just run a netstat on those machines to see what is established, and or listening. This will give you a more accurate picture of the application using a port. (e.g., if for some reason I assign port 21 to my http server, you will see it versus assuming I am running FTP).
But back to your question on seeing output. There are two views here (being you typed localhost)... What YOU will see, versus what someone outside of the LAN will see. If you're on a Linux/BSD system, you don't need to run nmap. You could use LSOF:
$ sudo lsof -i -n | awk '{print $1"\t"$8"\t"$9}'
This will show you all network based sockets in use. But if you STILL want to use nmap, you need to understand how nmap works by default (e.g., how many ports will be searched, since by defaultnmap will only scan 1000 most common ports. Service running on say port 24681 will not show up. It's uncommon).
But you STILL want to use nmap. I suggest to get a full view you try:
nmap -sT -Pn -T2 -vvv -A -p 1-65535 localhost
This will work fine, will take some time locally, and will NOT work well against non-localhost. This is because all networks are not the same. For example, if a network is VLAN'd, PVLAN'd, or separated/intersected with say IPS/IDS/Firewalls may respond different. For example, if a switch has some creative ACLs, your switch may intercept, and respond to the NMAP scan (not the target). This is usually the case when you see a target responding as if ALL ports are opened.
SUMMARY: To see what is running on YOUR machine, you're better off logging into it, and using something like lsof or netstat. If you're testing against your network LOCALLY (on the same subnet) you may need to fiddle with different services (TCP/UDP), timing (slow versus fast/insane scans), ports, and so forth.
wks01
doesn't have to be Linux-based. There's Nmap for Windows too.