Difference between Generate Script option at database level and backup and restore option
With backup you have all data. Of course you can generate script for data, but for a DB with 1-2 GB the script will be very big and will execute long time. 

The best way in my point of view is detach/attach method. It will preserve the current state of the DB. Of course you can make backup before that. In that case you also have to take into account downtime for transferring database between servers.