так строки же (тег <tr>) закрывать надо, а у вас только открывающие теги. А каждый новый<tr> браузер воспринимает как новую строку, пусть даже и без содержимого (вот и получается, что у вас в таблице не пять строк, а десять), и какое-то микропространство под неё резервирует - вот и заголовок не на том месте, и для rowspan нелогичное значение прописывать приходится