I looked at the Outliner Data API view and it’s not visually clear what makes them different. A TSE_RNA_PROPERTY tree element should be a property of something in Blender and probably should not be allowed to have children elements. However, for example, the Data API view of the Outliner shows BlendFile Data > Objects > Camera > Bounding Box is not a property(or at least the property widget isn’t visible) yet in file outliner_tree.cc within function outliner_add_element() the local variable named “type” is assigned TSE_RNA_PROPERTY . Shouldn’t it be assigned TSE_RNA_STRUCT ?
If it seems like it would help to make things clearer then feel free to explain other TSE_* too