Launch conditions specify when the workflow must be executed.
All workflows except scheduled are “save” event-based, which means that they will be evaluated ONLY when a record is saved from within the application. That save event will usually be some user creating or editing a record, but it could also be triggered from a web service call or by some specially crafted code.
Since workflows are triggered when we save a record the different launch options that we have are related to this event:
Only on the first save: Triggers the workflow when you create a new record. For example, a welcome email would have this launch condition so it gets sent ONLY when the new contact is created.
Until the first time the condition is true: Triggers the workflow only once for a record that complies with the defined conditions. Once executed, your workflow will not trigger on the same record again. However, it will trigger actions on other records in the selected module when they fulfill the conditions. For example, when an invoice enters status paid we send a “thank you” email to the client. If we edit the invoice again and save it we don't want that email going out again for this record.
Every time the record is saved: Triggers the workflow every time you save a record, including the first creation save. This is ideal for calculated fields. For example, the forecast amount field on opportunities uses this launch condition to calculate the forecast each time the record is saved.
Every time the record is modified: Triggers the workflow every time you edit and save your record, EXCEPT on the first creation save. For example, if we want to get an email each time a ticket is closed, we would use this launch condition so that even when a ticket is reopened and saved again we would get that email.
Scheduled Workflows are time-based, not event-based, so they are triggered on a certain date/time.