Is the complement of every semi-decidable language a semi-decidable language?
No. A language $L$ and its complement $\bar L$ are semi-decidable if and only if $L$ is decidable (see here).
For example, the language containing all programs that terminate is semi-decidable, as you can run any program to see if it halts. Its complement on the other hand is not semi decidable, as you cannot have a routine that determines, if a program will run forever or not.