Let me start by throwing in some on the topics you mentioned befor I come to the conclusion:
Well load balancing relates to how one distributes traffic to the instances. That is based on domain name lookup, etc.
It is important we have the knowledge of which IP addresses are currently assigned to the instances that autoscaling creates.
Now, Autoscaling determines whether or not to increase/decrease the number of instances running.
You can have multiple IP address entries for some records in the DNS settings and machines will be allocated in a roughly round-robin fashion from that pool. But, it is difficult to the keep the pool up to date in real-time.
The load balancer provides an easy mechanism to provide a single interface/IP address to the outside world and it has knowledge of which instances it is load balancing in real time.
If you are using autoscaling, unless you are going to create a fairly complex monitoring and DNS updating system, you can reasonably assume that you must use a load balancer as well.