To append to what @TaraKizer said,
An UPDATE statement can never insert new rows.
When you use the UPDATE..FROM clause, you have to be careful. Go to this page, and look at the section "Best Practices" where they discuss the UPDATE..FROM construct.
The example you posted is one of the reasons why many people, @jcelko for example, recommend strongly against using that construct. It is not ANSI SQL. I use it, and use it often, but you just have to know what it is doing.
Couple of things you can do if you are not sure of how the update is going to work are
a) replace UPDATE t1 SET t1.c1 = t2.c1 with SELECT * and run the query. Then look at the t1.c1 and t2.c1. You can see what the existing value of t1.c1 is, and what it is going to be replaced with.
b) If it is a production environment, do a "BEGIN TRAN" before your update, examine the results (and number of rows affect) after the update, and if you are satisifed, run "COMMIT TRAN". If not, run "ROLLBACK TRAN". You have to be careful with this though because until you run COMMIT or ROLLBACK, other processes will not be able to access your table.