Quality NVR software will separate the processes out where there isn’t a heavy application doing transcoding/display all the time. Blue Iris used to be notorious for not scaling because the front end app was displaying cameras all the time burning up CPU. When they split out to allow a back end service that resolved the issue. (Version 4 I think?)
Aggregating the cameras and writing them out to disk really doesn’t take a ton of resources but eventually you can burn up a lot of network throughput and disk throughput forcing you to scale out to multiple servers.
Transcoding applications (web server for mobile apps in the case of XProtect) can burn a lot of CPU while mobile devices are connected and displaying. You can split this process off to another server as well if you would like or run on the same box if you have plenty of CPU.
The display end, particularly if you want to show lots of feeds at the same time, needs quality CPU, plenty of RAM, and decent graphics performance.
I personally run XProtect Essentials with 12 cameras on an i7 Desktop, SATA 4TB WD Red Pro, and 16GB RAM with no issues. Frames don’t drop even when mobile devices or desktops are viewing the feed. The only thing that loads the desktop up heavily is when I open the video playback app directly on the desktop itself and it is rendering all 12 HD feeds directly.
Other details: I’m running 3MP HikVision cameras with full resolution and 4-8Mbit for the bitrate.