Subnets are a range of IP addresses in the VPC and, as the name suggest Public Subnets have direct access to the internet while Private Subnets have NO access to the internet.
When you first create a public and a private subnet and all subnets will have a local route, so they look absolutely the same.
In order for a Public Subnet to be Public and have access to the internet:
VPC must have a IGW (Internet Gateway) attached
we need to attach that Internet Gateway to the subnets route table
instances in the subnet must have a public IP address ( or we must enable Autoassign public IPv4 address to the subnet)
NACL associated with the subnet must be properly configured to allow inbound and outbound traffic.
Each subnet can only be associated with one route table, so that traffic can be routed within the VPC or to the internet.
Subnets are created within AZ, by having a multi-tier application and placing multiple subnets into different AZ you can set up Highly Available and resilient Architectures.