So are there ways to implement action that's challenging without having to introduce deaths?
"Deaths" are pretty much just themed setbacks; it's the setback that's the thing. So consider the challenge that's often one of the first challenges in a platform game:
If you filled the pit with spikes, and took away the stairs, and put a checkpoint at the left, it'd be basically the same challenge, you'd just be theming it different. But there are some benefits to the "death" theme: it gives you a bit more variety in setback types, more flexibility in terms of bigger setbacks (like if you have "lives" you define a bigger setback for when the player runs out of them) and some more flexibility in terms of level design. (It'd be tricky and tedious for the designer to work out a path back to a previous spot from every challenge-point on a screen. "Death" lets you essentially warp the player back to a previous spot when they fail a challenge.) It also has a psychological effect, of course, but not necessarily a better or worse effect, just different.
Anyway, so whatever "progress" is in the game (whether that's distance towards a goal, or wealth, or EXP, or whatever) you could always have setbacks give a direct hit to progress (being knocked off platforms or sent backwards, losing money, losing EXP) rather than treating those setbacks as "dying" and being sent back to an earlier game state.