A couple of code review points:
cout << "Failed to launch";
Errors should probably be sent to
cerr rather than
cout. You should also send a
endl after your message to flush the buffer, otherwise it will not be printed immediately (or at all).
You should also end your program in this circumstance, otherwise your code continues to try and use the null pointer in the following lines.
glfwPollEvents();// if this line is missing it crash
You need to call either
glfwWaitEvents() regularly to receive important messages from the operating system. It is less than ideal, but I am not surprised that the program crashes without that line.
I recommend setting an error callback to notify you if/when errors are generated within GLFW. See http://www.glfw.org/docs/latest/group__init.html#gaa5d796c3cf7c1a7f02f845486333fb5f for information.
Your other questions are quite complex, and will require OpenGL knowledge. I suggest finding a tutorial and starting there before trying to do everything from scratch.