Disposing SQL objects inside another using block
Yes, you can do this, and the garbage collector will do the job well. This is very close to your original code (snippet 1), but notice the parameter clear instructions.

using (var sqlConnection = new SqlConnection(ConnectionString))
{
   sqlConnection.Open();

   using (var command = new SqlCommand("select...", sqlConnection))
   {
       command.ExecuteNonQuery();
       command.Parameters.Clear();  // &lt;-- IMPORTANT BEFORE RUNNING NEXT COMMAND

       command.CommandText = @"another query...";
       command.ExecuteNonQuery();
       command.Parameters.Clear();  // &lt;-- IMPORTANT BEFORE RUNNING NEXT COMMAND

       // ...etc
   }
}