All the words are "RPN" if that means that you can write their stack effect (which you can for all words). Sometimes it will be a "compiling" stack effect with words taken from the parser stack (as with VARIABLE), but I'll argue that's still RPN.
I don't know if it is worth arguing nomenclature, but some things in Forth are not RPN. Maybe VALUE is not the best example. The part of VALUE that is not RPN is reading the name of the value item from the input stream following the word VALUE. That is like any other compiled language.
3 VALUE Threecreates a new word initializing the value to 3. As you can see the name is not on the stack when the word VALUE is encountered. There are words that operate on strings with their descriptors on the stack as address and length. Other types of strings are counted with the count appearing as the first item in the array. These work with the stack.
String definitions are not RPN themselves. Declaring a string is read from the input after the word that starts it.
." string contents"Assemblers written in Forth are a good example. Early Forth assemblers had very different assembly syntax to be easier to write. They would appear as
opr1 opr2 opcode , The operands were words that returned the register id for example and the opcode was a word that accepted the two operands from the stack and combined them with the numeric opcode to produce the instruction on the stack. The comma is a Forth word to put the word from the stack into the dictionary which is where the code would be compiled for the time being.
Now the non-RPN assemblers written in Forth use the same syntax as any other tool (for the opcode and operands anyway), but the various aspects of using commas and such are different. Still, they are no longer RPN.
While it is not really hard to get used to RPN, many don't like it (the lazy ones perhaps?) and many Forthers are willing to accommodate that.
The system is powerful. You can put hooks on defered words, redefining what they do at runtime. This can be very convenient and is one of the real elegant things about OpenBoot/OpenFirmware.
Yes, I've used that to redirect I/O between the console for debugging and a serial port for runtime work or even a socket connection to another window.
One of the issues that people don't like is that many things are only provided in a raw form. You often have to do a fair amount of work to create your own libraries. Compared to the many libraries that can be found for many languages that would appear to be inconvenient. But I view all but the most often used libraries with a cautious eye. They are like footprint libraries for layout. The footprints may be fine, but if they have a bug I don't want to find out after they are used in a design. So I create my own footprints and I tend to write my own libraries.