Bomb lab phase 5 - 6 char string, movzbl load, and $0xf, %ecx, and index an array with that?

what does adding the string (param1) with the loop counter (eax_1) do?

That's just array indexing. It gives you the address of the appropriate character. ecx = *(unsigned char*)(param1 + eax_1) is basically ecx = param1[eax_1].

As you say, the code loops through all 6 letters, keeps the low 4 bits of the ascii code and uses that to index a hardcoded lookup table. The selected values from said lookup table are summed up, and that's your result which has to be 0x42.