Some types of functions require _Implementaion in the end, because the main part of the function is executed elsewhere. For instance, BlueprintNativeEvent will be executed in the blueprint, but you the _Implementaion part in C++ can have additional functionality to it.
Or network functions, where a part is created somewhere in the .generated file, but the _implementation is for you to use.
So as I understand it, you need _Implementation when a function is split in two parts, so to say.
Maybe someone will give more details.