La explicación estuvo buena, porque me quedó claro que tanto read_sql como read_sql_table sirven para extraer información de una base de datos y ambas devuelven un DataFrame. La diferencia es que read_sql se usa para ejecutar consultas personalizadas (por ejemplo con SELECT y WHERE), mientras que read_sql_table se usa para traer directamente toda una tabla existente. Al final, las dos están “extrayendo” datos de la BD, solo que con enfoques distintos: una con consultas y la otra con la tabla completa.