how to have conditional required fields through hook_form_alter?
In Drupal 7, I would use the following code.

/*
 * Implements hook_form_alter().
 */
function test_form_alter(&amp;$form, &amp;$form_state, $form_id) {
  switch ($form_id) {
    case 'your_form_id':
      $lang = $form['name_field']['#language'];//get field language
      if(isset($form_state['values']['field_draft'][$lang][0]['value'])){
        $form['name_field'][$lang][0]['value']['#required'] = FALSE;
      }
      break;
  }
}


Note: Never use und try to get the language for multilingual sites. If site is not multilingual, then best to use the constant LANGUAGE_NONE and not the string 'und'.