"Launches" is measured client-side. A launch event will only occur if the user actually opens your app (bringing it to the foreground).
"Visits" is measured server-side (based on an activity timeout). By default, a new visit will be reported when a hit comes in from a user and that user has not sent in a hit within the past 30 minutes.
The most common cause of having more UVs than launches is when a mobile app is doing tracking from the background. In this case, a new visit can be created without necessarily having an associated launch.