It's like borrowing a key to a car. You check something out (get the car key) in order to make permanent modifications to it. When you are done, you check back in your model (give the car key back) and this latest version is saved into the database. What you do and how far you go while you have the key is up to you, but only you can make permanent modifications while you have the key. Once you give the key back, any dents or fancy spoilers you've added to the car remain permanently saved as part of the car.
When you put in check-in something, you let to know everybody work on your same server that this element is locked by yours, and only you or an administrator can remove the check-out.
You have to use it when you start to work on a component for two reasons:
1) in this manner is eliminated the risk of overwrite beetwen two or more people that could work at the same time on the element
2) you can't update on the server a convalidated thing that was not on check-out status
The procedure to do the second point is the "check-in"
"Add to Workspace" does just that without locking the file. You CAN make changes to it, but unless you "Check Out" the file you won't be able to check it back in to Commonspace. "Check Out" adds it to your Workspace and locks it. "Upload" saves a copy to the server-side Workspace (backs up the files in case your PC crashed), but does not put it in the Commonspace for anyone else to see or use. "Check In" uploads it to the server-side Commonspace for everyone to use. Warning: If you DELETE a file in your Workspace that you have not checked-in, it is deleted from both local and server-side workspace. Be careful!