Well, it was illegal, but theoretically possible, for someone born in 1956 to be in the US military in Vietnam in 1969.
Dan Bullock is believed to have been the youngest US serviceman killed in action in Vietnam. He was born December 21, 1953, and lied about his age to enlist September 18, 1968 age 14 years, 8 months, and 28 days. He arrived in Vietnam May 18, 1969 (15 years, 4 months, & 27 days) and killed June 7, 1969 (age 15 years, 5 months, & 17 days).
Since only a minority of Marines in Vietnam were killed in action, there should have been several as young as Dan Bullock who survived their tours of duty, and possibly someone as young as David Rossi might have been.
If David Rossi of Criminal Minds lied about his age to enlist, then he might have been born sometime between January 1, 1956 and December 31, 1956, and arrived in Vietnam sometime between January 1, 1969 and December 31, 1969. Thus his age when he arrived in Vietnam might have ranged from twelve years and one day to thirteen years, eleven months, and thirty days (one day before his fourteenth birthday).
Thus it is unlikely, but theoretically possible, that a boy David Rossi's age could have looked old enough to claim to be 18 and enlist and serve in Vietnam in 1969.
Or maybe the sources you used for David Rossi's biography are in error.
Or maybe the writers of Criminal minds didn't notice that it doesn't add up. There is a TV Tropes trope called "Writers Cannot Do Math". It does discuss Criminal Minds, but not Rossi's timeline.
What explains this contradiction
Not every contradiction can be explained. Mistakes happen.Where do those biographies derive his age or Vietnam service from?
If the biographies mention it explicitly, you have your answer. If they don't, you can only ask the author. – Flater Sep 20 '18 at 8:34