AWS has something called Elastic Load Balancing which can balance load between healthy instances, so no, you don't need a separate instance for the load balancer unless you plan on running your own load balancer like NGINX.
DNS load balancing is probably overkill, you can easily add that later on if needed. Ideally, you'd setup your domain to point to your load balancer and the load balancer will swing traffic between instances.