As RobinB said, you’ll want to use Vertex Array Objects, Vertex Buffer Objects and Shaders. These are the meat and potatoes of the new OpenGL pipeline. The process involves stuffing a bunch of information like Vertices into a buffer and then a script (called a shader) processes the data for rasterization. As DaveDes said, LibGDX has some utilities to make your life easier. It’s also going to require using matrices to position your objects in the 3D world. Again, LibGDX likely has a lot of that hard work done for you.
But don’t let all those long words scare you away. Just take it piece by piece and you’ll find it’s really not that bad. A little more work than the fixed pipeline, but easily doable.
Billboarding
This is likely getting a bit ahead of you, since you’ll want to get the basics of working VAOs, VBOs and Shaders down first. So this is for after you go down that dark road.
It looks like you’re putting together some billboards. This is the process of taking a flat panel and making it always face the camera. You can think of billboarding like a sign on the side of the road, only these signs would always face you no matter where you stand. Typically this is done with a quad and a transparent image instead of a disc. Rendering a quad is a lot faster, since it’s only 4 vertices. Though it’s not limited to just quads, so if you really want to use a disc, then you can still use the methods I’m going to list, to help tackle your problem.
Easy Method
Just don’t billboard. Stuff a sphere into a VAO/VBO and render it where you need. I bring this up, because if you just want something to represent where your light is for development purposes, there’s no reason to go mad over billboards just yet. If you want to use this in actual game play, then it’s probably not the best method. Especially if you’d be using a lot of them, then you would need to use instanced rendering and blah blah… so no.
Medium Method
Stuff a quad into a VAO/VBO. Pretty simple so far.
The next part is a little more tricky and requires using something called a “Look At” matrix. This does what the name implies. You feed it 3D vectors called Eye, At and Up. The matrix then does some behind the scenes magic and makes the object face where you want it to. This is perfect for billboards, just tell it to look at the camera and shazam instant billboard.
The previously mentioned vectors are
Eye: The location of the object.
At: A point the object is looking at
Up: Which direction the top of the object is facing (sort of).
Note: sometimes people refer to these vectors in different names like “right, center and up”. I imagine LibGDX has already implemented the math for this and you just need to figure out the syntax for calling it.
Difficult Method
My favorite method for handling billboards expands on the previous example. Though instead of flipping back and forth between the CPU and GPU, we simply feed a bunch of 3D vectors to the GPU and then use something called a Geomtry shader to create the actual billboards.
What makes this somewhat difficult is you’ll first need to learn how to use Geometry shaders. Then you’ll need to figure out how to calculate the Eye, At and Up vectors in the shader. So you’ll need to know a bit of basic vector math.
It’s not terribly complicated, it just requires a lot of basic knowledge about a bunch of different things.
The really nice part about this is being able to deal with billboards as single points, which becomes very useful when you get into particles systems. It also leaves the door open for some advanced particle systems which exist solely on the GPU (which means stupid fast).
You’ll probably want to work your way up to this though. I mention this mostly as something to keep in mind, so you don’t get too entrenched in a more basic method.