Form data not being entered into the SQL statement
Drupal flattens the form values array so the element set at $form['info']['first'] will be available in $form_state['values']['first']. 

If you want it to be available in $form_state['values']['info']['first'] you need to set the #tree attribute on the parent element:

$form['info'] = array(
  '#type' =&gt; 'fieldset',
  '#title' =&gt; t('Personal Information'),
  '#collapsible' =&gt; TRUE,
  '#collapsed' =&gt; FALSE,
  '#tree' =&gt; TRUE
);


There's more info available on the #tree and #parents documentation page if you're interested.

The alternative is to change your db_query() call to use the "default" method:

db_query("INSERT INTO {subscription_info} (first, last, email, phone) VALUES ('%s','%s','%s','%s')", 
  $form_state['values']['first'], 
  $form_state['values']['last'],  
  $form_state['values']['email'],
  $form_state['values']['phone']
);