I was like you until last year. I did all my development from Emacs on WSL1, writing mostly Windows-specific code (DCOM). I maintained a set of brittle hacks to allow me to drive Windows side CMake and MSBuild straight from Emacs, and then run LSP on compile commands from Clang tricked into thinking it's cross-compiling. It held up surprisingly well.
Eventually, I installed a WSL2 distro so I could run Docker, then I had to reimage the machine because corporate reasons, and then, with my work involving less Windows-specific code, I decided to not recreate my pile of hacks, but start with a fresh WSL2 setup. It works well enough, so that's what I use now.
FWIW, I always liked WSL1 more. WSL2 is basically just more streamlined VirtualBox setup; WSL1 is magic.
WSL1 is a subsystem on the NT kernel, allowing Linux binaries to run natively on Windows itself (not a virtual machine). It's the spiritual successor to Interix, that showed up in NT 4.0 and was removed in Windows 8.
The flip side is Wine, allowing Windows binaries to run natively on Linux.
Eventually, I installed a WSL2 distro so I could run Docker, then I had to reimage the machine because corporate reasons, and then, with my work involving less Windows-specific code, I decided to not recreate my pile of hacks, but start with a fresh WSL2 setup. It works well enough, so that's what I use now.
FWIW, I always liked WSL1 more. WSL2 is basically just more streamlined VirtualBox setup; WSL1 is magic.