Private IP addresses support IPv4 and IPv6 as well, but support for IPv6 is also limited. They can only be assigned dynamically and IPv6 addresses cannot communicate with each other inside a VNet. The only way to use IPv6 addresses is by assigning them to an internet-facing Load Balancer, where the frontend IP address is an IPv4 address and the backend is an IPV6 address.
Private IP addresses are typically used for VMs, internal Load Balancers, and application gateways. A VPN cannot have a private IP address because it is always internet-facing. There is a maximum of 4096 private IP addresses per VNet. You can, however, create multiple VNets (50 per subscription).