Except for video transcoding, a PeerTubeinstance is not CPU bound. Neither Nginx, PeerTube itself, PostgreSQL nor Redis require a lot of computing power. If it were only for those, one could easily get by with just one thread/vCPU.
While viewers themselves contribute a little additional bandwidth while watching the video in their browsers (mostly during surges), mirroring servers have a much greater uplink and will help your instance with sustained higher concurrent streaming.
Bandwidth: can be mitigated using <a target="_blank" rel="noopener noreferrer" href="https://docs.joinpeertube.org/admin/following-instances#instances-redundancy">PeerTube redundancy system</a> and cache servers that serve video static files in front of your PeerTubeinstance