The ${..} placeholders are evaluated at "compile time" as the process is built.
Many of the process steps also support runtime placeholders, which have a %{..} syntax. These are used to insert data from the running process into the process steps.
Perhaps confusingly, properties are often set to runtime placeholders. For example, the standard Complete document process sets the content property of a download step to %{data:template.documentInstructions}, to specify that it should read instructions from the template data area's documentInstructions property.
The full set of runtime placeholders is documented in the documentation for the Worker Script, method replaceRuntimePlacholders(). The most commonly used placeholders are those that extract all or part of a data area to use in place of a fixed string, as in the example above.