I can't say much about Node-RED except that I tried it once, found it too confusing to get started (and already knew how to use the other tools), and gave up. So, I can't speak much to it. But I know there are some here who do use it.
From a technical standpoint, the biggest difference is that it requires an external system to run on. You already have one, it sounds like, but it's still worth noting. Along those lines, Rule Machine rules run entirely on your hub. webCoRE pistons also run entirely on your hub, while the editor alone does need something else (the public webCoRE Dashboard by default, though you can also host it yourself with some effort). For Node-RED, of course, all pieces are external to the hub.
I think this is largely a matter of personal preference. There are some things that were previously easier (or perhaps just possible at all) to do in webCoRE compared to Rule Machine, but Rule Machine has been through many iterations since then. There are still some things you may find easier in one than the other, and just some differences in how certain features work.
The biggest difference between the two is the interface: Rule Machine runs entirely on the hub, and all actions are created using the editor and similar UI elements that you'll see in other Hubitat apps (even though they've done good work with extending this to use things like the new table-based action editor). webCoRE's editor runs outside the hub, so they had complete control over the interface from the get-go (likely one of the reasons webCoRE was created over continued work on CoRE alone--that also ran entirely on the hub), and some people prefer it (but, again, RM has made improvements here too).
Neither Rule Machine or webCoRE are really writing "code," even though both display a summary of your selections in a sort of pseudo-code. Both are essentially point-and-click editors. When your rule or piston runs, the Rule Machine or webCoRE app just does whatever your rule or piston is configured to do, based on your selections. These are ultimately just regular Groovy apps on your hub, albeit complex ones with the ability to perform lots of arbitrary functions based on lots of different possible user inputs. Again, all ultimately runs in the same Groovy environment as any other Hubitat app — and this environment is exactly what both apps themselves were written in (albeit both originally for that other platform with a substantially similar environment).
Exactly how you get to the data may differ slightly, but all should let you access device attributes and run commands on devices in some way. You do, in general, still need a device on Hubitat to use with these apps, with what you can do depending on what the driver offers — same as any app on Hubitat. (But this is a slight generalization as Node-RED lets you integrate devices from other systems too, so it doesn't have to be a Hubitat device; webCoRE has some built-in device integrations, too, though I don't think that's the reason most people use webCoRE, and Hubitat has native support for some of these now too, like LIFX, that I'd probably recommend instead where possible.)
Ultimately, I'd say a lot of this is personal preference. I can tell you mine, which among these options is mostly Rule Machine, but really a good chunk of my automations are other built-in apps (I don't go straight to RM for everything, nor would I recommend that) or custom apps that I wrote for a specific purpose (this is an option if you feel like writing actual code; see: Developer Documentation | Hubitat Documentation). But your needs and preferences may vary!