Will the Arduino crash if it never completes the main loop()?

void loop()
{
  ...
  loop();
}

It's not crashing because it doesn't reach the end of the loop, it's crashing because you have recursion without an exit condition so what you're seeing is the result of stack overflow.