I think the instance class is going to vary based on the kind of workloads you run. You might start out with X but next thing you know your running a bunch of random stuff. You can always run a cluster of different instance classes and then have the scheduler schedule your workloads to the right instance.
M5 and t3 are Nitro based instances. They have a big list of benefits https://aws.amazon.com/ec2/nitro/ . My favorite being that I can log into those instances using my AWS account with no SSH keys.
My personal workloads are more memory-hungry. Since you can't throttle memory like cpu you should factor that in when sizing your instances. I think fewer denser instances are probably more favorable than lots of small instances.
I'm not sure what your use case is for running nginx rever proxies but you may want to look into kubernetes ingress.