A subprocess is a modelled process wich is started by a so called main process.
Said main process is paused while the sub-process is unfinished. Thus it makes sense to outsurce complex but coherent tasks, wich must be finished for the process to proceed into a subprocess.
A sub process must be modelled before it can be used. You have to create a new process, which depicts the sub process.
As soon the sub process is modelled, it must be deployed. Then you have to drag&drop a “collapsed sub-process” to the place in which the sub process should start. Name it like the pool of the sub process was named. Afterwards deploy the main process.
Variables, Notes or documents can be interchanged between main and sub processes. For further explanation see:Inherit Variables to a sub process, Inherit documents to a sub process, Inherit notes to a sub process, Transfer documents to a main process, Transfer documents to a main process