What you do is create a structure for each diffrent object, one Bullet stucture, one Green Monster structure and so on. Then you create an instance of those structures (objects) when you need them, and that's the instance you store in the list array, as pointers. So if you have 10 bullets, you create 10 instances of the Bullet structure (each with diffrent name, location, direction etc), and save those pointers in the array. The structure contain all the info you want, such as name, location, direction, status, color, material and whatever. You decide what the struture is for each object. On each frame, you iterate through your list array and decide which are to be removed, added, changed etc. For example, a bullet will be updated on every frame to move forward in its direction, then on many frames later, it may hit something, so it gets deleted from the list (the object is freed and the pointer removed from the list), and the Green Monster is then updated to change color, or start falling etc., or even more object added for the blood splater etc. At the end of the list iteration, you iterate the list one more time, but this time, it's only to update OpenGL as to what is to be displayed. Then on the next frame, you do that all over again.
If you set your frame rate to 60, make sure that any moving object such as a bullet, are moving at a constant rate no matter what frame rate you use. If your monter walks at 10 FPS, then you need to make it walk slower at 60FPS.
You can also use events to modify your list. Like mouse and keyboard events. Just lock your list first and unlock it when done, because you don't want a frame to update it at the same time the mouse is.