Parameters are well known constructs in programming languages. They are generally found within function declaration. They are placeholders filled up by values at runtime provided by the caller. Parameters in ARM templates are no different. Parameters are like fill-in-the-blanks, and these blanks are filled up with values by the caller.
Parameters help to make a template generic and customizable. Instead of hardcoding the values, data can be supplied at runtime and the template deployment can work with new set of incoming data. Parameters also make templates reusable across environments and subscriptions.
Note that there can be maximum of 255 parameters in an ARM template (there are ways to work around this limitation by using object data types for parameters) and using runtime values generated during deployment rather than defining parameters in ARM templates.
...