Is it safe to call field_view_field() for a field that isn't attached to the given node?
Source code of this function looks as follows:

function field_view_field($entity_type, $entity, $field_name, $display = array(), $langcode = NULL) {
  $output = array();

  if ($field = field_info_field($field_name)) {
  // Actual work on field, not needed here in this answer
  }

  return $output;
}


It means that if there is no field, empty array will be returned. That's all. Is it safe? Depends what are you doing with that array down the road. For example you cannot render empty arrays with render(), as it accepts only arrays representing Drupal's renderable elements.

Note that this is from the current, 7.23 version of Drupal.