resizebox doesn't respect linebreaks?

Use a tabular inside the box.

\resizebox{5cm}{!}{%
 \begin{tabular}{@{}l@{}}
  hello\\ world
 \end{tabular}%
 } 

Both use a horizontal savebox to store and then scale the content. You can't have line breaks in this kind of boxes. While manual line breaks would be somehow possible (e.g. using some vertical stacked \hboxes), automatic line breaking only works when a specific width is given.

The adjustbox package supports a minipage=<length> key which automatically places a minipage around the content. Then line breaks will work.
It also has a tabular key, which also allows the stacking of lines, e.g. using tabular=@{}l@{} to left-align all lines without any separation on the right and left of the table. So your example could now be written as \adjustbox{tabular=@{}l@{},width=5cm}{Hello\\world\\}. Note that the trailing \\ is mandatory when tabular is used.

You can also use \shortstack{Hello\\world} (maybe with \struts included) to get the line breaking. Then there is the minibox package which provides a quick tabular as macro \minibox.