They both seem to do the same thing: return the output buffer content to you and delete it aftewards.
Which one should I use?
Both functions clear the output buffer, turn off output buffering, and return the previous buffer value.
However, ob_get_flush first sends the current buffer to the client, whereas ob_get_clean just discards it.