You asked:
When to use many notation?
The ERD should reflect the design and the business requirement you decided to implement as RDBMS rules.
As an example from the ERD you have provided, A Shipment Includes MANY line_items. Since both sides are mandatory, this means that:
1-In physical design, there would be FK of Shipment ID in the Item table.
2-This FK column can't allow nulls. This makes it mandatory to reference an existing shipment before inserting a line_item in the Item table.
3-As a result your shipment table must include the desired row before an line-item is inserted.
You asked:
what is the difference between this notation and the "zero or many"
and "one or many" notation.
Your diagram does not provide an easy case to use to explain this one.
When you have a one-many relationship, it means that a PK of the of the table in the One side of the relationship will be created and play the role of FK in the many-side of the relationship. Very much like the previous example. The difference is that when you have "zero or many", it is actually, "zero, 1 or many", meaning that under certain business conditions, your application is allowed to insert a row in the shipment table even if no items reference this particular shipment.
Unlike the previous case, the FK is created in the Item table as Nullable (allows nulls).