Copy all data to slave before mySQL replication connect
Q1. Yes, not only "should" you copy the data from the master, you have to.  

Replication in MySQL relies on the two servers beginning with an identical set of data, after which, every query that modifies data on the master makes the same changes to the data on the slave.

There are two ways to do this, either by stopping the master completely (shutting down mysqld) and copying the data files... or using mysqldump, as explained in the documentation:

http://dev.mysql.com/doc/refman/5.6/en/replication-howto-existingdata.html

Q2.


  when disaster strikes on master, it switch to slave


Well, not exactly.  "It" (the master) or "it" (replication) doesn't do anything when there's a failure on the master.  You, or your application, must choose if and when to abandon a failed master and start writing to the slave, instead of writing to the master.  At this point, the slave becomes master and is the only server in the system, because the data on the old master is now stale and obsolete, and must be resynchronized.


  What kind of disaster could happen?


The fact that you ask this question suggests that you are not thinking of the kinds of disasters that replication actually protects you from: hard drive failure, memory corruption, cpu failure, cooling fan failure, power supply failure ... as well as utility power outage, fire, flood, earthquake (assuming the slave server is in a different data center) ... and a pretty-much endless list of the things that can go wrong in or around a server.

Your question suggests that you were thinking along the lines of things that might happen to your data in properly-functioning server... such accidental or malicious altering or deleting or rows, or dropping of tables or databases.  Replication doesn't protect against these things, because they'll replicate perfectly.

There was, however, a new feature introduced in MySQL 5.6, "Time Delayed Replication," which allows the slave to lag a fixed period of time behind the master, to give you time to recover from such a change to your data.  The slave still "discovers" the changes to the master in near real time, but does not actually apply the changes to its data until the configured amount of time has passed from the time they were originally logged on the master.

http://dev.mysql.com/doc/refman/5.6/en/replication-delayed.html