Before we look at the details of these subjects we need to understand some basic concepts first.
When we discuss the past, there are two different ways of looking at the past, OPEN TIME and FINISHED TIME.
If we use a time element which has happened and is finished, that is finished time, like YESTERDAY, or LAST YEAR.
But if we are in September, and we talk about THIS YEAR, which started in January, in the past, but is still happening, this is OPEN TIME, or a time element which has not finished yet.
TODAY, or THIS MONTH, is the same thing, OPEN TIME.
When we use a FINISHED time element in a sententence, we must use the PAST SIMPLE or the PAST CONTINUOUS, or the PAST PERFECT. We cannot use the PRESENT PERFECT.
I played tennis YESTERDAY. ( Yesterday is finished time.)
When we use a time element which is OPEN TIME, we must use the PRESENT PERFECT.
I HAVE SPOKEN to David TODAY. (Today is open time)
If no time element is used, then that means it is OPEN TIME.
I HAVE spoken to David.
The auxilliary verb we use for the PAST SIMPLE is DID, and the auxilliary verb we use for the PRESENT PERFECT is HAVE or HAS, with the PAST PARTICIPLE.
The verb EAT has the following parts:
EAT, ATE, EATEN, where EATEN is the PAST PARTICIPLE. With the PRESENT PERFECT, we always use the EATEN part of the verb.
I have EATEN my food. this is correct.
I have EAT my food. This is not correct.
I have ATE my food. This is not correct.
Let's look at an example:
I speak to my friend David, and then 2 yesrs go by without my speaking to him. I can say:
I last spoke to David 2 years ago.
( 2 years ago is finished time, so I used the PAST SIMPLE.)
I have not spoken to David for 2 years.
(Here, the 2 years starts in the past and continues to now, so is open time, so I have to use the PRESENT PERFECT, or HAVE NOT SPOKEN.)
It has been 2 years since I last spoke to David.
(Again, the 2 years starts in the past and continues to now, so is open time, so I have to use the PRESENT PERFECT, or HAS BEEN.)
Another important idea is the difference between FOR and SINCE.
FOR is used to measure the duration , to say how long something lasts.
FOR 2 hours, FOR 6 years.
SINCE is used to identify the starting point of an action. It refers to when things began.
SINCE 6 o'clock, SINCE January.
In the question
Have you ever eaten snails?
EVER means at any time in your life, since you were born until now, so it is OPEN TIME, so we use the PRESENT PERFECT, HAVE you EVER.
The same is true with this answer
No, I HAVE NEVER EATEN snails.
BEFORE in this context means before this moment, and so is open time.