抽象名詞が、そのまま「抽象的」な意味で、明確な形をもたない連続体を表す場合は不定冠詞を付けませんが、個々の具体的な事例を表す場合は不定冠詞を付けます。

(1) a. We always have to overcome difficulty.(「困難」)
b. The doctors encountered a slight difficulty during the operation.(「困難な出来事」)
(2) a. Speech is silver, silence is golden.(「話すこと」)
b. I will make a speech this afternoon.(「演説」)
(3) a. Your paper needs radical revision.(「変更する行為」)
b. I made an important revision in your paper.(「具体的な変更」)
(4) a. Experience is the best teacher. (「経験(何かを行うことを通して身につける知識・技能)」)
b. I had a pleasant experience.(「体験(自分に何らかの影響を与える出来事)」)

上記(1)(3)(4)で見られるように抽象名詞の前に形容詞が付くと不定冠詞を付けることが多くなるようです。形容詞・形容詞扱いの名詞が付くことによって個々の具体的な事例を想起させるからだと思います。

「breakfast」「lunch」「dinner」という「食事」の名前には通例不定冠詞を付けませんが、形容詞が付いたり、何かのお祝いやだれかの為の特別の食事にも不定冠詞が付きます。
He gave us a good breakfast.
I was invited to a dinner given to welcome the new ambassador.
もし「I had a breakfast/lunch/dinner.」のように形容詞なしで「a」を付けたら、「?」とはなると思いますが、無理やり「形のあるbreakfast/lunch/dinner」を映像化すれば「朝食会・昼食会・夕食会」、「a lunch」なら場合によっては「a box lunch(弁当)」になるでしょう。いずれにしても、「食事」の名前に「a」を付けたら、通例は付けないので何らかの説明が必要でしょう。