How do I wrap a binary so it executes my code first then launches the original code in a separate process? purely the launching a buffered piece of data as a new process, I'm familiar with IO of course
Since you want separate processes, why not just run your code then dump the original executable and run it?
It's also possible to avoid writing the binary to disk and just running yourself, then deallocing all the memory in the process, then mapping your application by yourself, and doing the whole PE loading process yourself (IAT resolving, relocations, etc), and then just set the context appropriately and let the new application run.
However, if you're doing this for any kind of "protection" or "obscurity" reason, you should know this will fail. It's incredibly simple for such things to be defeated with minimum effort, much less effort than you'll spend making your manual PE loader.
However, if you just want to make an executable wrapper, look at simpler packers like UPX, MEW, FSG, yoda's Cryptor and many others.