Наиболее вероятным этимологи считают, что первое слово в заданном словосочетании образовалось от славянского существительного "кость" при помощи суффикса "-ей" (как, например, и слова "грамотей", "богатей").
Кость => кощей -- при этом произошло чередование буквосочетания "ст" с буквой "щ", что довольно типично для русского языка (например: крест, крестить -- крещение, крещённый; весть -- вещий; густой -- гуща).
Первоначально, в древнем русском языке, существительное "кощей" имело значение "худой, тощий", что соответствует образу этого сказочного героя.
Из приведенной выше словообразовательной цепочки очевидно присутствие в обоих словах одной и той же гласной "о" -- ведь она находится в сильной позиции в мотивирующем существительном "кость"; таковой и остается в мотивированном существительном "кОщей".
Это правильное литературное написание слова, хотя в произведениях русских классиков можно встретить и написание слова через гласную "а", однако в современных словарях присутствует слово "кОщей".
С первым словом разобрались.
Ну а со вторым совсем легко: в этом слове имеем приставку, которая предшествует корню, начинающемуся с глухой согласной "с", поэтому в полном соответствии с правилами языка русского, пишется эта приставка с буквой "с" --бессмертный.