I set up dual boot to Ubuntu 22 LTS. WSL is good for command-line stuff but its support for GUI apps is clunky and a bit weird - I don't think it's worth using. A VM should probably work as well, but I just boot in to a real system to remove any complications from VMs (particularly around GPU drivers, which seem to not always work so well in a VM, and Linux has enough trouble with GPU drivers as it is).
I'd note the OS version you build on has significant compatibility implications: due to the way glibc seems to work on Linux, it requires the glibc version of the system you build on - so in short it won't run on any older OSs than the one you build on. This seems to be a particularly horrible aspect of Linux development: use too old a system and all the compilers are out-of-date and you might not be able to build anything at all, but if you choose too new a system it won't support some older OSs still in use. You can work around this with various options for virtualization, building your own toolchains, or integrating runtime environments (Steam has one) - I researched those and they all look like a total nightmare. So I just use Ubuntu 22 LTS and build on that and it seems good enough and the right balance between old and new.
Also you have to install Steam directly from steampowered.com (I noted this in the Steamworks documentation). Ubuntu's app store has Steam, but if you install it from there, integration doesn't work. I haven't looked in to this too much but I'd guess that Ubuntu's app store uses some kind of emulation to install the Windows version of Steam and be able to run Windows games, whereas the official version is a genuine Linux version; as Construct's Linux export is a genuine Linux export, I guess it can't talk to a Windows emulated version. Just a theory though. To help debug it you can run the exported Linux app from a terminal and you should see some messages logged to the terminal about whether the Steamworks plugin was able to initialize. If it doesn't load it at all, probably something else is wrong, like the .so was built incorrectly (e.g. perhaps built on a system using newer glibc or something like that).
Fortunately it looks like Valve have done a good job of making the Steam Deck easier to work with - obviously you can't do things like install the wrong Steam, its glibc is pretty up-to-date so that doesn't cause a problem, and generally if it runs on Ubuntu it just works on the Steam Deck too. I don't think I had to actually change anything at all specifically for the Steam Deck.
For IDEs, I just use VS Code - I'm already familiar with it, and if you install the C++ and CMake extensions you can build, run and debug in VS Code, and it's good enough. Of course you can use different tools, build setups or whatever, but in my limited experience you quickly end up going down a rabbit hole doing things like spending hours configuring a build system to build a custom tool to build something else, and I'd rather do something straightforward so I can actually get real work done.
In short I learned a lot about Linux development, and it's overall a huge pain, and no surprise lots of people don't bother (sorry Linux fans - at least sort out the glibc situation and the whole thing will be a lot better). However I focused on getting as simple and straightforward a setup as possible, and that makes it tolerable. Perhaps I should write this up in a blog or something.