Answer1: As soon as the development is completed, testing should take place in dedicated testing environment. Testing environment is very small in terms of data volume but is just like production environment otherwise (for example, name of databases, schema, name of jobs and scheduling should be same as that of production).
Smaller data set guarantees that the ETL jobs will execute faster as they have to process lesser data. And QA will get the execution results faster waiting time is less as QA have to execute the ETL jobs again and again during testing different scenarios and to validate bugs. And if the data set is bigger, it is frustrating for the QA to wait for the execution to complete. A lot of time is wasted in waiting.
Answer2: Yes. A dedicated testing environment is required. Generally, this environment should not be data heavy. This setup is specially needed while testing the data as soon an ETL solution is implemented by development team.
Testing team should be responsible for environment setup (for example, publishing databases, executing ETL packages/workflows). If data volume is too much in the testing environment then it will take ages to complete the execution of ETL jobs.
So, the approach is to test the code against a relatively smaller data sets (in comparison to production). Once the testing is completed in such environment after that, we recommend that ETL solution should be deployed in Pre-production kind of environment where ETL solution has to process a huge volume of data. The deployment in Pre-prod is done by DBA but QA team is responsible for testing.
Answer3: We should generally wait till the data reaches the target. However, you can do a quick check to ensure that the data is loaded in staging area after the extraction has completed. But again, this decision has to do a lot with the volume of data. If it takes hours for data movement to staging then I would recommend to start testing the staging data in order to avoid any delay in un-earthing any potential issues associated to the related ETL jobs but if you have smartly created a smaller data set for testing then I would recommend waiting till the data reaches the target.