Whenever you are iterating through objects it is not good to delete any objects that are in the remainder of that collection.
You can fix it by moving backwards so that any deletions don't matter because the next loop only hits paragraphs you haven't changed yet.
Code:
Private Sub secHeading()
Dim para As Paragraph, iPar As Long
For iPar = ActiveDocument.Paragraphs.Count - 1 To 1 Step -1
Set para = ActiveDocument.Paragraphs(iPar)
If Trim(UCase(para.Range.Words(1))) = "RCW" Then
With para.Range
.Collapse (wdCollapseEnd)
.Move Unit:=wdCharacter, Count:=-1
.Delete
.InsertAfter (" -- ")
.Style = "Heading 1"
End With
End If
Next
End Sub