Simplemente use las expresiones en la segunda consulta para el GROUP BY de la primera consulta:
SELECT * FROM chat_messages GROUP BY LEAST(to_id,from_id), GREATEST(to_id,from_id)
Simplemente use las expresiones en la segunda consulta para el GROUP BY de la primera consulta:
SELECT * FROM chat_messages GROUP BY LEAST(to_id,from_id), GREATEST(to_id,from_id)