Altogether, there are three ways to make a noun from a verb.
1. -는 것 = the most general construct.
2. -기 = for well defined defined activities and for set phrases (-기 쉽다/어럽다, -기 싫다, etc)
3. -ㅁ = literary sounding construct better suited to formal contexts. Also makes many adjective-based nouns.
Their difference is hard to grasp just by understanding some rules. You'll need to practice reals usage examples.
Both 먹는 것(을) 좋아해요 and 먹기(를) 좋아해요 are fine, but there is no such difference in meaning as you mentioned.
They both mean "I like eating" and nothing more.
Here are some other examples.
- 나는 사람들이 저렇게 행동하는 게[것이] 싫어. (only -는 것 is possible)
- 영원히 존재하는 것은 없다. (only -는 것)
- 나는 음악 듣기를[듣는 것을] 좋아한다.
- 파도타기 하러 서해 바다에 갔다. (only -기)
- 의상과 무대의 화려함에도 [무대가 화려한 것에도] 불구하고 재미가 없었다. (-기 is not possible)
- 병세의 위중함에 [병세가 위중한 것에] 비추어 특단의 조치가 필요하다. (-기 is not possible)
- Individual word examples: 슬픔(슬프다), 기쁨(기쁘다), 죽음(죽다), 삶(살다), 젊음(젊다).