Creating Loops outside of void loop()

Hello, I am wondering about the possible ramifications of creating loops within functions other than void loop().

I have a little experience in many programming languages, but I am not great at any of them. This is the first language I've used that runs based on a re-occurring main loop. Is there any reason why one shouldn't create other functions with loops inside of them, and use the void loop() to call the other functions when necessary, or is it better programming practice to code sub-loops of void loop() within void loop() using conditional if/then statements?

As an example, I am working with sensors connected to my Arduino Uno, and there are a few main functions that I want to perform. One is a calibration routine, and another is a serial output routine. I want to be able to control what code the Ardunio is running based on serial.write commands I send from my PC.

I want to avoid having a large unorganized void loop() function that has if/then statements for each serial.read to determine which part of the loop to run. Instead, I would rather have separate functions with loops within them, that void loop() calls based on the serial.read inputs. Then when the separate function ends the loop, the code would go back to void loop(). At least in my mind that is how it would work. Before spending time working on this though, I thought I would ask if there are any reasons why I should NOT do this, even if it would technically work. I don't want to practice bad programming habits in a language I am just learning, and have it come back to bite me later when I understand why it was not a good idea, even if it worked.

Thanks in advance.

Is there any reason why one shouldn't create other functions with loops inside of them, and use the void loop() to call the other functions when necessary

No reason at all.