E aí, Matheus. Beleza?
Realmente são duas formas de produzir dataframes.
pd.DataFrame() usa um dicionário na inicialização do dataframe num formato similar a esse aqui:
{'nome_coluna_1': dados_coluna_1,
'nome_coluna_2': dados_coluna_2}
com os nomes sendo uma string e os dados sendo listas, arrays do numpy ou séries.
A segunda forma de criar dataframes é um método das séries do pandas que tem menos flexibilidade por só poder criar um dataframe de uma coluna. Existem situações específicas quando lidamos com dados agrupados onde pode ser mais prático usar o to_frame e em seguida usar o método reset_index() quando temos índices de mais de um nível. Por exemplo dados de vendas agrupados por cliente e por mês.
Não conheço algum tipo de detalhe mais profundo como alguma diferença no uso de memória ou performance quando o volume de dados cresce muito, mas nas minha aplicações , eu sempre usei pd.DataFrame() e nunca senti necessidade de outro método.
Espero ter ajudado.
Abraço,