What is the difference between OnCollisionEnter and OnTriggerEnter?

They seem to do very similar things. Can anyone describe what the differences between them are and maybe give me some examples of when one or the other would be used?

The scripting system can detect when collisions occur and initiate actions using the OnCollisionEnter function. However, you can also use the physics engine simply to detect when one collider enters the space of another without creating a collision. A collider configured as a Trigger (using the Is Trigger property) does not behave as a solid object and will simply allow other colliders to pass through. When a collider enters its space, a trigger will call the OnTriggerEnter function on the trigger object’s scripts.