I think the predicate you wanted to demonstrate is called append/3, which works on list (while concat applies to atoms).
In Prolog, 'foo' constructs an atom, which is equivalent to foo without any quotes (but the quotes are useful to construct atoms with spaces, with digits, starting with a capital letter, etc.)
However, if you want to manipulate atoms as text, you typically want to use strings instead, which are literally lists of character codes in Prolog, and can be entered as double quotes. For example, "ABC" = [65,66,67]. To convert between strings and atoms dynamically, use atom_chars/2.
For example:
?- append("Prolog is", " awesome", Z), atom_chars(A,Z).
Z = [80, 114, 111, 108, 111, 103, 32, 105, 115|...],
A = 'Prolog is awesome'.
?- append("Prolog is", Y, "Prolog is awesome"), atom_chars(A,Y).
Y = [32, 97, 119, 101, 115, 111, 109, 101],
A = ' awesome'.
?- append(X, "is awesome", "Prolog is awesome"), atom_chars(A,X).
X = [80, 114, 111, 108, 111, 103, 32],
A = 'Prolog '.