For general use, I have for a long time ended up using using SecureCRT, perhaps for 90% of my requirements, but also use other software from time to time too, some already mentioned, because they all seem to excel in one area or another.
Also, very worthwhile getting familiar with serial port comms with at least one software language (for me it's Python), so that you can automate things easily too. JavaScript is another option as mentioned by
@rich tExample: Say you want a way to transfer a load of binary data (a few hundred kBytes) in or out of a microcontroller, using serial. Sure, you could use terminal built-in capabilities to handle the transfer, but with code it was easy to provide user messages to indicate if the transfer was successful, do sanity checks on received data or data about to be sent, name the files appropriately, etc.
Another use-case: I wanted to directly chart from a stream of data coming from a microcontroller. That was easy with Python (and would be very feasible with JavaScript too as mentioned earlier), no need for terminal software (but again, for sure it could be possible to do it directly with terminal software, e.g. write to disk, and read each time the file changes), but personally I find it more flexible to do it with a programming language, rather than a ready-built terminal software app.