How do I read a script? How does the processor separate "data" from "commands"?
The script is read left to right and is the concatenation of the output of a preceding Transaction to the input of a consuming Transaction


Basically, though the scripts are not actually concatenated. The scriptSig is run, and then the scriptPubKey is run on the resulting stack. This distinction is occasionally important.


  A script output can have only one corresponding transaction script that consumes it.


There are many possible scriptSigs that could "solve" any scriptPubKey, but each output can only be spent once in a valid block chain.


  but I'm unclear if this means non-standard scripts may never get incorporated into a block


They can get into blocks, though miners using the standard client will never add them to their blocks.


  How does the forth like processor know the difference between data on the stack and commands on the stack?


Data is preceded by bytes 1 through 78, the pushdata ops.