types vs data

When I check the blender API, it says that bpy.data is where all of the internal information for Blender is stored. When I check bpy.types, it doesn’t say anything and just lists a bunch of stuff.

My confusion regarding Blender’s architecture is heavily based around this. What really makes me even more confused is that a lot of information appears to be accessible from both bpy.data and bpy.types

If I had to guess, I’d say that bpy.types stores class and struct information, while bpy.data holds the actual objects that are created from the types classes. Someone, please tell me if I’m right or wrong on this.

You’re right.

bpy.types contains the blueprints, in the terms of object-orientation the “classes”.

bpy.data is where you find the class instances (the “objects”).

If you want to learn about the properties of an object, look at its type in the API docs.
If you want to know where something is located in bpy.data, also check bpy.types and see the “References” links in the API docs (or use auto-complete in the python console).