Persistent just means stored somewhere outside of the server’s RAM such that it would be kept if you restarted the server. A DB table, or a Cache would be persistent.
I think the help on the page does a pretty decent job of describing each one:
I’m not entire sure I understand your second question. At the end of the day, you use whatever storage mechanism suits your needs. If you have a single server, or a load balancer using sticky settings, and are ok with sessions going away if you restart the Lucee service, then memory is the easiest method and will work fine. If you have a cluster of servers and want to round robin users on them and/or want a service restart to not blow away people’s logins/shopping cart/etc then use a persistent storage.
At Ortus, we use deployments on Docker swarm and store our sessions in a Couchbase Cache Cluster via the Ortus Lucee Couchbase Cache Extension. But that’s just what works best for us.