You are right, it will apply ORDER BY after reducing the number of rows with WHERE, GROUP BY and HAVING. But he will apply ORDER BY until LIMIT.
So, if you filter the number of rows down enough, then yes, ORDER BY RAND () can achieve what you want, without much impact on performance. There is a legitimate benefit for code that is simple and easy to read.
The problem arises if you think that your query should reduce the number of rows to something small, but over time, as your data grows, the number of rows to be sorted becomes large again. Since your query then does LIMIT 10 in the sorted result, it hides the fact that you are doing ORDER BY RAND () on 500k lines. You just see that performance is mysteriously declining.
SQL Antipatterns: :