As I understand it, piped processes all start more-or-less at the same time. Generally, the processes in a pipeline will read from stdin or write to stdout (or both), and completion of the I/O will dictate when the process ends.
For processes that don't have any output (like
touch) or any standard input (like
cat when operating on a file), I would generally expect that their pipe connections would just be ignored by the program.
So what you would basically have is three commands running in parallel:
cat ~/scr.txt > ~/scratches/scr6.txt,
cat /dev/null > ~/scr.txt.
It's probably OS-dependent whether command 2 would fail with an error if ~/scr.txt doesn't already exist, since it would be in a race condition with command 3. Commands 1 and 2 are also in a race condition, but the race would only wind up affecting the file's ctime/mtime/atime.