A target group is a group of resources you want your ELB to route requests to:
Instances: used when you have EC2 instances with Autoscaling group and you want to distribute incoming connections to them.
IP Addresses: both VPC and on premises IP addresses are supported. Useful in case of microservices architecture using containers.
Lambda Functions: distribute traffic to your lambda functions. ( check this post to see how we took advantage of Lambda Target groups and ALB to gradually migrate an old monolith)