Since LabVIEW doesn't support MDI, it's not really accurate to speak of parent-child relationships. The fact that VI_1 opens and runs VI-2 doesn't make VI_2 a child of VI_1. Using VI Server, VI_1 opens and runs VI_2 but VI_2 could just as easily open and control VI_1, and VI_2 can open V1_3 which could open and control VI_1. After being opened by VI_2, VI_3 could be controlled by VI_1. It's like opening an running a VI from the File>Open menu. Once opened, they are independent and there isn't a way, asfaik, for a VI to know who or what opened it.
In a single VI, you can separate while loops operating independently. They can share data via queues or even local variables. When you have separate VIs, they can share data with Get/Set Control Value methods, queues, global variables, datasocket, TCP/IP. Depends on the type of data and whether you'll be using the app builder and have separate exe files.
Wait or Wait Until Next are synchronous. They will block all other operations in the same while loop. Elapsed time does a Get Time in Seconds with every loop iteration. It might not block but if you wire it to a case statement that you want to run when time has elapsed, what's inside the case statement might block other tasks inside the same while loop. Things that you want to run continuously is best put in a separate while loop.