At least on Windows it i can use any thread for creating contexts, with the limitation that it has to be the same thread that calls glfwInit(). No issue here.
If it turns out that it is really required to the the "Main Thread" on OSX/Linux i would have to "refactor" quite a bit 
Actually, there's no dependency to glfwInit(). You only need to call glfwInit() once, regardless of how many contexts you create.
There are 3 concepts you need to be aware of: (A) window/context creation (B) running the event loop that dispatches events for the window and (C) making the context current in a thread.
- On Windows, (A) and (B) must happen on the same thread. It doesn't have to be the main thread. (C) can happen on any thread.
- On Linux, you can have (A), (B) and (C) on any thread.
- On Mac OS X, (A) and (B) must happen on the same thread, that must also be the main thread (thread 0). Again, (C) can happen on any thread.
A cross-platform application must be written such that it respects the strictest of the above scenarios (which is Mac OS X). Anything else means your application will break when it runs on different OSes.