Where do I edit the HTML surrounding a field's output?
In Drupal, you don't edit any file belonging to a module/theme you didn't create. 

Rather, in your case, you use the hooks Drupal makes available to change the output a module or a theme creates with a theme hook.
In the case of an image field created with the field API, the theme hook that outputs the HTML for the image field when it is rendered on page is theme_image_formatter(). What you need to do is overriding that theme hook in a module or in the theme you use for the site.

Since you don't need to totally change the output from that theme hook, you just need to implement hook_preprocess_image_formatter(&amp;$variables) and add your attribute to $variables['item']['attributes'].

Keep in mind that hook_preprocess_image_formatter(&amp;$variables) is invoked for every image field used by Drupal, so you need to be sure you are altering the output of the right image field.

As per implementing hook_preprocess_image_style(), this hook is not necessarily called for an image field, since theme_image_formatter() contains the following code.

  if ($variables['image_style']) {
    $image['style_name'] = $variables['image_style'];
    $output = theme('image_style', $image);
  }
  else {
    $output = theme('image', $image);
  }


It is just invoked when the image field uses an image style. Plus, it would be invoked every time an image style is used, which doesn't necessarily mean when a image field is rendered on a page.

Similar problem there is with hook_preprocess_field(), which would invoked every time a field is rendered with theme('field').