The answer to your literal question, "Does a logical system have semantics?" is "Obviously, yes. The definition you quoted says so!" So I figure that isn't what you're actually asking.
I think the root of your misunderstanding is the word "formal". In this context, it doesn't mean "rigorous", the opposite of "hand-wavy"; it means "depending on form". That is, the truth of a sentence of, say, propositional logic depends only on the form (or shape, if you like) of the sentence. $P\wedge Q$ is true if, and only if the propositions $P$ and $Q$ are both true. It doesn't depend on what, if anything, those propositions represent in the real world: if $P$ is any true thing and $Q$ is any true thing, then $P\wedge Q$ is true.
Consider the formula $\text{I am a human} \wedge \text{My mother is a giraffe}$. Reasoning informally (i.e., not based on the form of the sentence), one would say that it is impossible for a human to have a giraffe as a mother so the sentence must be false. Reasoning formally, one would determine whether the propositions $\text{I am a human}$ and $\text{My mother is a giraffe}$ are true individually, by looking at their interpretation, which assigns each of them a truth value. Then, one would combine those truth values using the semantics of the $\wedge$ operator.
But let's go back to the informal claim that the human/giraffe sentence must be false. One property that "reasonable" logics have is that renaming variables makes no difference, as long as you don't make two different variables have the same name. You're familiar with this from programming languages and mathematics: if you take a program and rename all the variables, the program does exactly the same thing; in $\lambda$-calculus, this is called $\alpha$-equivalence. So, since propositional logic is eminently reasonable, I could rename the second proposition in that sentence to be $\text{My mother is a human}$. Formally, the sentence is unchanged but now, reasoning informally, one would say that the sentence must be true! Taking things a little farther, one could even make the proposition $\text{I am a human}$ stand for the real-world fact "It is sunny today". That would be a stupid thing to do but, formally ("shape-wise"), it's perfectly valid. Just like it's perfectly valid but stupid to write a program that says something like
colour = "Hello, world!";
message = green;
setColour (message);
print (colour);
or to write "Let $v$ be a graph containing a vertex $G$."
Summary / tl;dr. Yes, logics do have semantics. The semantics of a logic tells you how to determine whether a formula is true or false, based only on the syntactic structure of the formula and some interpretation that states the truth values of the most simple formulas (propositions in propositional logic, atomic formulas in first-order logic, and so on). That's all the semantics of the logic does: in particular, it has nothing to do with assigning "real world" meaning to the variables and constructs in the formula. Semantics depends only on the form ("shape") of the formula; in particular, it doesn't depend on the names chosen for the variables. That's why the systems are called formal.