A lot of language VMs use a Forth-like bytecode. Python, WebAssembly, even the JVM languages (sort of) use a stack-based bytecode. So it's a useful paradigm to understand if you're interested in working on the internals of a language like that.
In a typical non-Forth "stack VM", there is a single stack which behaves like the C stack: allocate an activation record with locals on a function call, pop the whole thing off at the end. Intermediate calculations go on top of all this, avoiding the need to explicitly register allocate in bytecode, but operands don't naturally flow between function definitions; they're copied around explicitly as the stack grows and shrinks.