Yes, wearing a red shirt to a semi-formal is OK, as long as the shirt is simple. You wouldn't want to wear a red shirt with hearts all over it, for example.
Choosing a shirt to go with your suit will depend greatly on the event you are attending. White shirts with black suits are considered traditional and rather formal, whereas other...