A sub-process is merely a testcase that has the "sub-process" box ticked. It is otherwise created in exactly the same way as any other test case. The input parameters are properties that are passed into the sub-process by the calling testcase, and the output parameters are passed back at the end of the sub-process
To invoke a sub-process, one adds a sub-process step and, once the sub-process has been selected the parameters are made available.
I have attached a simple project showing this - hopefully it will answer your questions.