Building off of what @bjoern__koth said, the different levels will change what information segments return as well.
If you have an event level segment, Adobe will look in each specific event, and if the conditions are met, will return all the information in that specific hit. For example, if you have an event level segment with orders exists and product A exists. Your segment would return all of the products in that order. If someone ordered Products A, B, and C, the segment would return all three because they happened in the same hit.
A session (visit) level segment will look at your conditions and then return the entire visit. If you have multiple conditions, they don't have to happen in the same hit, just in the same visit. For example, if you do order exists and Product A exists in a visit level segment. Unlike the hit where they have to happen together, you could have someone who saw Product A on a product details page, and then placed an order for Products B and C. The segment would return the entire session. If you want to return all of the information for a session, but you need multiple conditions to happen together, then you can put a hit container inside of a visit level segment.
A person (or fan) segment works similar to a session level one. The conditions don't have to happen in the same hit if you have more than one, and at the person level segment, the conditions don't even have to happen in the same visit. If we use orders and Product A at a visitor level, I could come to the site on Day 1 and place an order for Products B and C, and then two days later come back to the site and look at Product A on a product details page. Once both conditions are met by the same person, it will return all of the information for that person. Again, you can nest other containers inside if you have conditions that need to happen at the same event or session but you still want to return all the information for the person.
So the main difference between them is not just where it looks for the conditions in your segment, but also the data that it returns too. Nesting containers can be a good way to make sure it's looking in the right level for your conditions.
If you have a specific use case for a segment, we can help you figure out how to structure it.