Why do I get "invalid operands of types 'const char*'" error?
Your first code took a String object, then added other strings (note lowercase) to it - which are characters enclosed in quotes. It is legal to add strings to String objects.

Your new code doesn't have any String objects at all - and you're not allowed to add strings to strings (both lowercase).

It will work if you change your new code to:

lcd.print(String("0")+hours+":"+minutes);

That turns the original string "0" into a String object, and then adds more strings to it.