Trouble understanding Cisco ACLs & NAT

Greetings again everyone! I hope everyone is doing great, I will be great when my college semester is over xD. So, this week in my college class we were learning ACLs and NAT with Cisco devices. While reading the material provided by my Professor, it makes sense in theory but when I go to configure a device I find myself lost. Correct me if I’m wrong, but ACLs are used for allowing/blocking connections on specific IPs and ports? I believe I have a decent understanding of NAT, it was utilized because of the IPv4 shortage and allows private IPs to be connected outside of the network? I am getting confused when port forwarding, UPnP, ACLs, and NAT because aren’t they all very similar? Could someone just explain them better so that I can possibly make sense of it all?

Thanks again to everyone who always provides some great insight into all my questions. Classroom learning is not my forte, I like to use it to get introduced to certain things, then try to learn them on my own.