if I have a clustered index on [column_a], [column_b], and [column_c] and run the same query from above, will the data ALWAYS come back sorted based on that order since that's the order that the clustered index was created on?
No.
SQL Server does not guarantee that it will return data in any order unless you specify the order. It is easy to prove things can go wrong by simply creating a covering, non-clustered index that leads on a different column:
But things can go sideways in other ways, too, e.g. when parallelism or partitioning come into play and SQL Server re-assembles the data from different threads, or when the query gets more complex using joins or filters and a different plan other than a clustered index scan makes sense. Leaving off the order by clause is telling SQL Server: "I don't care about order."
Also, just as a point of clarification:
If I have an ORDER BY clause on all the columns used in the clustered index, the execution plan will not have a sort operator.
...this is true only if the columns are listed in the exact same order as the key definition. ORDER BY c, b, a
is "all the columns" but it obviously will produce different output (and require some type of sort operation to get there).
If you expect and want to be comfortable relying on a certain order, always use an ORDER BY clause.
Further reading:
And previous questions here: