Connection requests to unbound TCP ports will not be DROPped, they will be REJECTed. (And although this requires a little more effort on your PC's behalf, this is also what most firewall configurations do, so it doesn't really matter.) Otherwise, your assumption is good - if no services are listening on any of your incoming ports, you don't need a firewall.
But how do you make sure this is the case?
Do you know of each and every program on your machine that is able to listen on a port? Maybe you have a program that happens to listen on a port for some useful function but it's buggy and it can be exploited. Maybe you have a virus that listens on a port to receive commands. Maybe you forgot to turn off file sharing and all of your family pictures are now on the laptop of the man across you at McDonald's, or worse, deleted.
Firewalls are much more convenient and secure. On a modern operating system, you can't make sure you know each and every process that may put your machine or your data at risk if you allow them on the net. You can easily block these using a firewall. If you configure your firewall well, you can make sure that only the processes you want are allowed to listen, because you need to give permission manually to every one of them.