Priscila, vamos lá... :)
Imagina que temos a seguinte expressão a ser avaliada:
99galinha peixe33boi cachorro 77gato c55elho pato44 888 22cobra
O símbolo ^ indica que a expressão buscada deve começar com (é obrigatório começar com o que vem a seguir).
A expressão \d significa que deve ser um dígito.
Até aqui, temos:
^\d
Isso significa que, até aqui, a expressão que buscamos deve começar com um dígito (deve começar com um número qualquer).
A expressão \w+ significa que o que vem a seguir pode ser uma ou mais letras.
Então, temos que:
(^\d\w+)
^ deve começar com
\d um dígito (número)
\w+ podendo ter uma ou mais letras depois do dígito
Assim, aplicando na nossa lista, teremos como resultado:
['99galinha']
Pois nossa expressão de avaliação começa com número (^\d). Perceba que 77gato 888 e 22cobra não entram como resposta. Por quê? Porque a expressão para avaliação é toda a sequência de caracteres.
99galinha peixe33boi cachorro 77gato c55elho pato44 888 22cobra
O primeiro caractere dessa string é 9 (de 99galinha) e o último é a (de 22cobra).
Quanto ao segundo exemplo, perceba que não temos mais o caractere ^. Isso significa que a expressão de avaliação não precisa começar com. O \b diz que deve ser retornado todo trecho da expressão que satisfaz o restante da regex, nesse caso o \d\w+. Assim, onde houver, dentro da expressão de avaliação, palavras que satisfaçam o \d\w+, ou seja,um número seguido de uma ou mais caracteres serão exibidos. Podemos ler a regex \b\d\w+ como: traga todos os trechos (\b) que comecem com um número (\d) e possuam após esse número um ou mais caracteres (\w+).
Assim, como resultado da expressão , teremos:
>>> import re
>>> resultados = re.findall(r'(\b\d\w+)', '99galinha peixe cachorro 77gato c55elho pato44 888 22cobra')
>>> resultado
['99galinha', '77gato', '888', '22cobra']
Vê se ficou melhor de entender assim, Priscila. :)