What is the difference between hidden and value types in form API?
With the hidden form element, the HTML output in the form is &lt;input type="hidden" /&gt; (plus other HTML attributes), while with the value form element nothing is output for the form. The value is simply kept in the cache Drupal uses for forms created with the form API, but nothing is sent to the browser. (In other words, the value is kept on the server side.)

Generally, the "hidden" form element is used when the value is used from JavaScript code, but it is not a value editable, or visible in the form.