What is the difference between "activate" and "launch"?
From the Commands Reference section of the AppleScript Language Guide:
activate
Brings an application to the front, launching it if necessary.
launch
Launches an application, if it is not already running, but does not send it a run command.If an application is already running, sending it a launch command has no effect. That allows you to open an application without performing its usual startup procedures, such as opening a new window or, in the case of a script application, running its script. For example, you can use the launch command when you don’t want an application to open and close visibly. This is less useful in AppleScript 2.0, which launches applications as hidden by default (even with the run command).