Even if VPCs are peered, the subnet's route table are configured to route to igw if it doesn't fall under the vpc cidr (10.0.0.0/8 local & 0.0.0.0/0 igw if public). you'd need to add an entry to vpc entry in all subnets if routing is required

VPC is not transitive in nature, but how?

VPC A VPC B VPC B VPC C

Why not VPC A can’t connect to B?

VPC A, is not going to be aware of VPC B to C peering connections.