KVM has been my go-to for many years of running servers because it is extremely lightweight. Like for example, last year I finally ditched the old poweredge 860 servers (very early 2000’s machines which topped out with a dual-core CPU and 8GB of memory), however from these servers I was running half a dozen virtual linux boxes handling websites and email. Of course running a Windows vm is going to take a lot more resources but any desktop computer that is less than a decade old would easily handle it while still managing your regular linux desktop.
One caveat about KVM, however, is that there’s not really a great GUI interface for it. There IS a monitor to manage the VMs you have up and running, but I always launch new VMs from the command line, which is pretty much just a matter of setting the name and memory, pointing it to an existing image file or ISO, and then using the GUI monitor to launch a VNC remote connection to handle getting a new OS installed or make changes to an existing image to get it on the network. I don’t consider this a burden, but then again I grew up on the command line.