.دیروز اشتباهِ بزرگی کردم (I made a great mistake yesterday.) — You're certain of that as you're speaking and are merely narrating now.
.حالا میفهمم که دیروز اشتباهِ بزرگی کردهام (I realize now that I've made a great mistake yesterday.) — The realization happens at or around the time of speaking.
Another example:
.من را ببخش، دیروز اشتباه بزرگی کردم (Forgive me, I made a great mistake yesterday.) — You both know about the mistake, and you're just apologizing.
.من را ببخش، دیروز اشتباه بزرگی کردهام (Forgive me, I've made a great mistake yesterday.) — Only you know about the mistake, and are about to "confess" and apologize.
.کورشِ کبیر ۲۵۰۰ سال، پیش زندگی میکرده — This tense is not the past narrative which is the equivalent of the English present perfect, but is the past narrative imperfect which covers the English present perfect continuous and more! All I can tell you is that it's got little to do with Cyrus being important in the sense that you might think. I'd say the same thing about Fluffy or even an aunt who lived 30 years ago. Also note that, using "میکرد" is perfectly fine here, but the other form kind of expresses that their lives consisted a noteworthy period of time. Let's just accept that we use it here and so should you! :P
شما تا حالا غذای ایرانی خوردهای؟ (Have you ever eaten Iranian food?) — This is the only option, though what you normally "hear" when a native speaker "pronounces" it, is:
تا حالا غذای ایرانی خوردی؟