This is getting fairly close to a style issue. Apart from a couple of minor comments, what I've done can be summed up pretty simply:
I've made it easier to read for *my* brain... but maybe not yours.
1. I've separated out your "color appropriately" function, which I think you can get some mileage out of, if only to clean up the whole wdColorWhite vs wdColorAutomatic thing, and if you ever decide you don't like Rose and want to go with Aqua... it's all in a single place.
2. There are two "Frosty Notes" -- read those. I'm not sure you want to wipe out data in voteauthin every time someone chooses something other than "Sole" -- remember, people don't always go linearly, and people make mistakes and click the wrong thing. I think you probably want to test whether or not voteauthin is filled with only " " and then you could wipe it out.
3. I know it works, but I'm still not sure why -- so I added in the colorappropriately function to the "shortname" case.
4. If you're using the Cancel (which means-- don't do this OnExit routine), then it means you're going to get another shot at the OnExit, so you can use that as a branch to stop the rest of your processing.
5. If you are setting .LockContents = False in both logic branches, you can pull it out and set above (or get rid of it entirely, perhaps)
6. With ... End With. Judicious use of this will make your code more readable. It's a judgement call. However, this is not a good use of it:
[vba]
With oCC_Target
With .Range
.Shading.BackgroundPatternColor = wdColorWhite
End With
End With
[/vba] This works just as well
[vba]
oCC_Target.Range.Shading.BackgroundPatternColor = wdColorWhite
[/vba] 7. Variable naming is a style issue. I renamed oCC_Target to CC_Associate. It makes slightly more sense to me... I'm dealing with CC primarily, and then occasionally an associated CC.
8. And I always reserve the right to change my mind. With the creation of the ColorAppropriate subroutine, suddenly the .ShowingPlaceholderText became less of a primary logic branch (since I was mostly using that as an argument for the subroutine), and thus I stuck with always thinking of the CC and the associated CCs (thus the slight change in the "longname" cases, structurally). A moving target, I know. But that's when you know it's really just a style issue, rather than right way vs. wrong way.
Anyway... here's my slight re-write of what you've done. Again, I think the bulk of this is simply style, rather than substance.
[vba]
Private Sub Document_ContentControlOnExit(ByVal CC As ContentControl, Cancel As Boolean)
Dim CC_Associate As ContentControl

Select Case CC.Tag

Case "longname1"
'if invalid, just cancel and do nothing else
If fnc_InInvalidLong(CC) Then
Cancel = True
'otherwise...
Else
'color this control appropriately
ColorAppropriately CC, CC.ShowingPlaceholderText

'and deal with associated controls...
Set CC_Associate = ActiveDocument.SelectContentControlsByTag("longname2").Item(1)
'if primary is blank, color appropriately
If CC.ShowingPlaceholderText = True Then
ColorAppropriately CC_Associate, CC_Associate.ShowingPlaceholderText
'otherwise, don't color
Else
ColorAppropriately CC_Associate, False
End If

Set CC_Associate = ActiveDocument.SelectContentControlsByTag("longname3").Item(1)
'if primary is blank, color appropriately
If CC.ShowingPlaceholderText = True Then
ColorAppropriately CC_Associate, CC_Associate.ShowingPlaceholderText
'otherwise don't color
Else
ColorAppropriately CC_Associate, False
End If
End If

Case "longname2", "longname3"
'if invalid length, don't do anything else
If fnc_InInvalidLong(CC) Then
Cancel = True
Else
'whether to color is determined by primary control, which is...
Set CC_Associate = ActiveDocument.SelectContentControlsByTag("longname1").Item(1)
'if primary showing placeholder, color appropriately,
If CC_Associate.ShowingPlaceholderText Then
ColorAppropriately CC, CC.ShowingPlaceholderText
'otherwise, no color regardless
Else
ColorAppropriately CC, False
End If
End If
Case "shortname"
If fnc_InInvalidShort(CC) Then
Cancel = True
Else
ColorAppropriately CC, CC.ShowingPlaceholderText
End If

Case "voteauth"
'color appropriately
ColorAppropriately CC, CC.ShowingPlaceholderText

'deal with the associated control, which is...
Set CC_Associate = ActiveDocument.SelectContentControlsByTag("voteauthin").Item(1)
'FROSTY NOTE:*** is this line necessary? You had it in both logic branches
CC_Associate.LockContents = False
'special case-- adjust our associated content control to not have placeholder text
If CC.Range.Text = "Sole" Then
CC_Associate.Range.Text = " "
'and move to the next CC
ActiveDocument.SelectContentControlsByTag("acmtype").Item(1).Range.Select
Else
'FROSTY NOTE:*** are you sure you want to do this? Selecting "Sole" will wipe out this data
'perhaps check CC_Associate.range.text against your "blank value" and reset only then, a la
'the commented out If/End If
'If CC_Associate.Range.Text = " " Then
CC_Associate.Range.Text = ""
'End If
End If
'don't forget to color our associated control
ColorAppropriately CC_Associate, CC_Associate.ShowingPlaceholderText

Case "Date1", "Date2", "Date3"
ColorAppropriately CC, False

Case Else
ColorAppropriately CC, CC.ShowingPlaceholderText
End Select
End Sub
'consolidation of the two colors you use
Private Sub ColorAppropriately(ByVal CC As ContentControl, bColored As Boolean)
If bColored Then
CC.Range.Shading.BackgroundPatternColor = wdColorRose
Else
CC.Range.Shading.BackgroundPatternColor = wdColorWhite
End If
End Sub
[/vba]