Olá Laura.
Vamos olhar o seu exemplo.
print("R$ {:7.2f}".format(123456789.50))
R$ 123456789.50
Nele o 7 é o numero minimo de caracteres, então se o tamanho do numero for menor ele preenche o que falta com espaços.
O 2 determina exatamente quantos números teremos depois da virgula.
Vamos a outro exemplo para entender melhor:
>>> print("R$ {:07.2f}".format(123.5000))
R$ 0123.50
Nesse exemplo fixamos que teremos dois números depois da virgula o restante é descartado, então ficamos com 123.50 que são seis caracteres (incluímos o ponto). Já que setamos que o minimo será sete o carácter que falta seria o espaço porem inclui o zero antes do sete então o resultado será 0123.50 .
Voltando no seu exemplo:
print("R$ {:7.2f}".format(123456789.50))
R$ 123456789.50
Fixamos que serão 2 números depois da virgula 123456789.50, um total de 12 caracteres e como 12 é maior que o minimo que colocamos que é 7 a String ficara do mesmo jeito.
R$ 123456789.50
Espero ter ajudado, qualquer duvida não hesite em perguntar.
Bons Estudos.