How to add a textarea to only one of the fields of this custom metabox?

Modify your array definition with something like this to add a new element of the array that specify the type of the field

"project_overview" => array(
    "name" => "project_overview",
    "title" => "Overview",
    "description" => "Write an overview of the project.",
    "type"=>"textarea")

Then in your code substitute

<input type="text" name="<?php echo $meta_box[ 'name' ]; ?>" value="<?php echo htmlspecialchars( $data[ $meta_box[ 'name' ] ] ); ?>" />

with something like this

<? if ( $meta_box['type'] == 'textarea') { ?
   <textarea name="<?php echo $meta_box[ 'name' ]; ?>">
   <?php echo htmlspecialchars( $data[ $meta_box[ 'name' ] ] ); ?>
   </textarea> 
} 
else  { ?>
   <input type="text" name="<?php echo $meta_box[ 'name' ]; ?>" 
   value="<?php echo      htmlspecialchars( $data[ $meta_box[ 'name' ] ] ); ?>" />
} ?>

Is better that you wrap the piece of code above in a function, like

function print_meta_box ( $meta_box ) {
  switch (meta_box ['type'] ) {
      case 'textarea':
            .... your code ...
            break;
      default:
  }  
}