Thank you for all the answers. I realized after some reading and digging my question was a little misleading. Baysaa and Varshith your suggestions worked fine, but in reality what I ended up needed was that all fields that could have multiple items that each one have its own unique label.
After digging around I found the theme_field() function, which I overrode as mytheme_field(). Here is how I did it. Although it's a tad long, the only thing I did was add $x to the function and increment it (at line 14). Is there anything wrong with this approach compared to the others?
/**
* Implements theme_field
*/
function nobo_field($variables) {
$output = '';
// Render the label, if it's not hidden.
if (!$variables['label_hidden']) {
$output .= '<div class="field-label"' . $variables['title_attributes'] . '>' . $variables['label'] . ': </div>';
}
// Render the items.
$output .= '<div class="field-items"' . $variables['content_attributes'] . '>';
$x = 0;
foreach ($variables['items'] as $delta => $item) {
$classes = 'field-item ' . ($delta % 2 ? 'odd' : 'even') . ' field-item-' . $x;
if($x == 0){
$classes .= ' primary-photo'; // add class for the very first photo if different sizing needed
}
// for this particular template, we are only showing 3 photos: 1 large and 2 small. However, other
// photos can be visible in the slideshow overlay. Thus, hide all photos after the 3rd photo (array index 2)
if($x > 2){
$classes .= ' other-photo'; // add class for the very first photo if different sizing needed
}
$output .= '<div class="' . $classes . '"' . $variables['item_attributes'] [$delta] . '>' . drupal_render($item) . '</div>';
$x++;
}
$output .= '</div>';
// Render the top-level DIV.
$output = '<div class="' . $variables['classes'] . '"' . $variables['attributes'] . '>' . $output . '</div>';
return $output;
}