For item #1, I would agree with shmem's suggestion of leveraging the start command, which will open a new command prompt to run a command/program and return execution back immediately. For more details, open a command prompt and type start /? to get the help message for the start command.
For item #2, I would recommend looking into using either the WaitWindowLike() or the WaitWindow() function of the Win32::GuiTest module. I would try running things by hand a few times to get the timing figured out to help decide what is a reasonable time out value to use with either of those functions.