The terminology in mocking can be confusing - and sometimes is quite unintuitive.
Therefore, many people proposed a simpler, new terminology, where you have only fakes, mocks, and stubs. Fake is the generic term for all possible kinds of test doubles, no matter where they come from and how they are used.
Beyond that, fakes are distinguished only along one single dimension: whether they influence test outcome or not; or, in other words: whether you have to set up return values for the fake, which are somehow used during test execution, or it is a 'silent' object which only serves to fulfill some dependency.
If it is such a 'silent' object, then it is called a Stub. If it actively participates in test execution, then it is called a Mock. Beyond that, there's no further distinction - which surely has its historical merits, but is now largely counter-intuitive and academical, and it's kind of obfuscating really important concepts of Test-driven development.
Concerning the comparison between Moq and FakeItEasy: the two frameworks are largely the same from a conceptual point of view - the differences are only in the API and in the terminology...
Thomas