Установка координат виджетов в макете сетки путем «пропуска» строк или столбцов почти бесполезна, поскольку это координаты сетки, которые только сообщают диспетчеру макета, в каких «слотах» будут находиться виджеты: поскольку в строки со 2 по 4, это пространство не будет использоваться.
Для достижения желаемого вам необходимо установить коэффициенты растяжения и, возможно, использовать минимальную высоту для указанных строк.
layout.addWidget(b1, 0, 0)
layout.addWidget(b3, 1, 0)
layout.addWidget(b2, 2, 0)
layout.setRowStretch(2, 1)
layout.setRowMinimumHeight(2, 50)
Но это может быть не то, что вам нужно, так как третья кнопка будет размещена в центре вертикальной сетки строк (оставляя пустое место внизу).
Чтобы избежать этого, два возможных решения:
добавить виджет, установив выравнивание по низу:
layout.addWidget(b2, 2, 0, alignment=QtCore.Qt.AlignBottom)
добавить последний виджет в четвертая строка и задайте растяжение и минимальную высоту для третьей пустой строки.
layout.addWidget(b2, <b>3</b>, 0)
layout.setRowStretch(<b>2</b>, 1)
layout.setRowMinimumHeight(<b>2</b>, 50)