Does AWS ELB handle HA by itself?
Yes, it manages HA of itself for you. The main product page mentions this -
https://aws.amazon.com/elasticloadbalancing/
ELB is engineered to be HA. You can see this by performing a dig command on your ELB and seeing that it returns multiple addresses.
By default an ELB will only send traffic to instances in the region the ELB is in. If you want cross region failover you would need to look here - https://aws.amazon.com/blogs/aws/amazon-route-53-elb-integration-dns-failover/
AWS Elastic Load Balancer(ELB) ensures High Availability(HA) across multiple Availability Zones(AZs) within a Regional Boundary.
Optionally you can select the Availability Zones where the ELB is placed, which impacts HA (Select multiple AZs for Higher Level of HA). You can also configure for multi-region HA using DNS routing policies to send traffic for multiple ELBs in different regions.
After you enable multiple Availability Zones, if one Availability Zone becomes unavailable or has no healthy instances, the load balancer can continue to route traffic to the healthy registered instances in another Availability Zone.
This is why for DNS mapping, you gets a CName for the ELB(not a A record), since there are multiple servers running behind the ELB for HA and scalability, which is managed by AWS.
For more details check the documentation How Elastic Load Balancing Works.