VPC is dedicated to one's AWS subscription, and subnet is a range of IP addresses in the VPC, wherein a specified subnet, the resources are launched.
Generally, if a public subnet is associated with resources, it enables communication to the Internet, but it is different in private subnet scenario that won't be connected to the Internet.
A VPC covers all the Availability Zones in this particular region. Once you create a VPC, you can now add one or more subnets in every Availability Zone. You should specify the range of IP addresses in the form of CIDR block for the subnet.
Example: A IPv4 CIDR (Classless Inter-Domain Routing) block notation looks like 10.0.0.0/16 - which is a primary CIDR block for the VPC.