Custom form multiple file upload with different extension
You can use '#type' => 'managed_file' instead of    '#type' => 'file'

managed_file types is powerful tools support any kind of files format with ajax upload.

example :
$form['file'] = array(
        '#type' => 'managed_file',
        '#name' => 'files[]',
        '#title' => t('Upload some photos'),
        '#attributes' => array('multiple' => 'multiple'),
    );

you can also add upload location of files like

'#upload_location' => 'public://myfiles/'

for more info.
https://api.drupal.org/api/drupal/developer!topics!forms_api_reference.html/7#managed_file