The semicolon is often used, because some folks (/me e.g.) like a style like this:
if [ ... ]; then
So, if the then-keyword is placed on the condition-line then it is neccessary because a new command starts, as written by choroba.
Concerning the quotes in the condition-check they are often used with variables to make sure no exception occurs if nothing is assigned to the variable. This is a safer style and looks unneccessary, but even in shell-programming it has from time to time made programs process though contents couldn't be assigned to variables. Then the command is still working because an empty string is compared.