I understand the definition of a non-singular code: if we have 2 symbols that map to the same codeword.

My first question is about this definition.
A code is called uniquely decodable if its extension is non-singular
$C^*(x_1,x_2,...,x_n) = C(x_1)C(x_2)...C(x_n)$
Is it non-singular in terms of the mapping from sequences to codewords instead of symbol to codeword ? For example
$D = \{a,b,c,d\} \\ C = \{0,00,10,11\}$
$C(aacd) = 001011\\ C(bcd) = 001011$
So $C^*$ is singular because we have 2 strings that map to the same codeword ?
My second question, does $C^*$ just mean all possible combinations and lengths of the codeword given the symbols and alphabet ?
Yes (though I'd rather say "macrocodeword" - i.e., concatenation of codewords). Hence, because that code is singular with resepect to the extensions, it's not uniquely decodable.
Yes, one should consider all posible concatenations of input symbols.