Qual é a diferença se eu não usar stdout = subprocess.PIPE no subprocess.Popen ()?

Eu observei recentemente em Python osubprocess.Popen() tem um argumento:

stdout=None(default)

Eu também vi pessoas usando stdout = subprocess.PIPE.

Qual é a diferença? Qual deles devo usar?

Outra pergunta seria, por que a função wait () não pode esperar até que o processo seja realmente feito algumas vezes? Eu usei:

a = sp.Popen(....,shell=True)
a.wait()
a2 = sp.Popen(...,shell=True)
a2.wait()

às vezes o comando a2 é executado antes do comando a ser feito.