Identifiers are user-defined names in C programs that are used to name variables, arrays, functions, and other entities, while keywords are predefined words that cannot be changed. Identifiers must start with a letter or underscore, can include letters, numbers, and underscores, and cannot be keywords. Identifiers are case-sensitive and can be up to 31 characters long in standard C.