if-then-else gives a boolean headache
The syntax you are looking for is the case statement.  You can use IF .. EXISTS for controlling the flow in your code but for something like this the CASE WHEN statement is what you want.

SELECT CASE WHEN col3 IS NULL THEN col1 + ' ' + col2
    WHEN col3 LIKE '-%' THEN col1 + ' ' + col2 + col3
    WHEN col3 NOT LIKE '-%' THEN col1 + ' ' + col2 + ' ' + col3
    END AS ConcatCol
FROM TableName;


and simplified to:

SELECT col1 + ' ' + col2 
       + CASE WHEN col3 IS NULL THEN '' 
            WHEN col3 LIKE '-%' THEN col3
            ELSE ' ' + col3
         END AS ConcatCol
FROM TableName;


Assuming I understood what you are trying to do of course.

EDIT: Added alias for column