If you are familiar with Revit you have an idea what object types are. They define the common behavior (geometry and property logic) of all of its instances / occurrences.
Well, again, IFC takes this to another level. Types are a kind of blueprint for your project objects. You don’t actually have to assign them to an occurrence, they can live as an “object library” within your project file – or even an external project library.
What can you do with types? You can define property sets, either fixed or ready to be overiden (see earlier post about psets). You can also define your object’s geometry/geometries.
You can, but you don’t have to. Typing is optional; use it if it supports your data model, skip it if you can live with a simple model.
That’s what a good schema is about. Many people think that IFC is strict. If you don’t want to use all fancy stuff you don’t have to. But if you want to the schema gives you the nuts and bolts to work with.