Board Thread:Support Requests - Getting Technical/@comment-24576164-20160105060716/@comment-4731443-20160105080226

Numbered parameters are simply interpreted in the order they are specified in the template call. So will assign word1 to, word2 to  and so on. They will always need to be set in that order (however, the template itself can use them in any order). Named parameters allow you to specify values for parameters in any order and make it easier to skip parameters (e.g. setting only the first and third parameters that appear in the template without needing an extra pipe in between to signify an empty second parameter). You can read Help:Template_parameters and the following sections for an overview.

Pipes are another matter. A variable with a pipe will display nothing if it is not specified. A variable without a pipe will display its own name if it is not set. Compare:
 * is set to
 * is set to

So a pipe allows you to simply hide a piece of information that was not provided, or you can omit it to show the variable name and bring attention to the fact it's missing. More importantly, they are a crucial part of parser functions, such as #if, which checks whether a variable displays anything.