But the GLContext.getCapabilities() method as an instance, that part eludes me. That is what I have yet to fix.
Sorry about that misunderstanding.
I was assuming that you are familiar with the Java programming language, or object-oriented programming in general, to the extents as to know the difference between a "static method" and an "instance method."
You know, GLContext.getCapabilities() in LWJGL 2 was a "static method," meaning that you would not have needed to create an object/instance of GLContext in order to call that method. You would call it directly on the "class" it was defined in.
Now with LWJGL 3 things have slightly changed and that method became an "instance method," meaning that you would now have to obtain an object/instance of a GLContext from somewhere in order to call that "getCapabilities()" method on it. And that "somewhere" is now GLContext.createFromCurrent() which will hand you (as its return value) an instance/object of type GLContext on which you can then invoke "glGetCapabilities()".
I hope that made it clearer.
As for GLFW: You do not have to integrate GLFW using any "additional" third-party library (jar or shared library) . GLFW is bundled with LWJGL 3 and is the
very preferred way to interface with the window manager and to create OpenGL contexts.