Coding Simultaneous Output to Neopixel and an LED

No, putting your code in a for loop in a function outside loop() does nothing to fix the problem. It just moves the problem! Feel free to create your own functions if you find they make your code more readable, or allow you to avoid repeating code, the are lots of good reasons for using them. But they won't magically fix your current problem. You have to get rid of the delay() calls (very short ones are sometimes useful and ok). Each section of code, whether its inside loop() or in a separate function called from loop(), must execute quickly so that other sections of code can also be executed in quick succession. Often, the only thing a section of code will do is check the time (millis()) and decide it is not yet time to perform their action and so they just finish, allowing another section of code to run.