I'm going to try and ignore the names of the functions/classes you've given - as some other comments have been made already about how it sounds like you might have a single-responsibility-refactoring to do. But I think that your intention is that this is a specific question which is unrelated to responsibility of class.
So the answer I think is the second way. But not exactly.
The key thing about inheritance is that what you're really trying to do is specify an interface, so that other application code can rely on certain functions being callable when it is handling what it (or what the author) only knows to be a base class and not the derived one. This is sort of less obvious in python because of its nature - it doesn't force you into paradigms and so it doesn't have an idea of abstract functions naturally built in. This is unlike say C++ where that's been a key concept of the language design, where you make declarations like:
virtual Result validate_data() const = 0;
or in Java where you declare an interface rather than a class. Here what you're doing is setting up a contract, then you inherit from it and implement. I mean I think you need to be careful with your terms, when you say CoreLogic and NonCoreLogic these are leading you away from thinking about the CoreInterface and the implementation of that.
The idea of a contract or interface is it is the thing that the rest of the application binds to. If your interface grows in size, in number of functions, that's another issue and is not solved by inheritance, although it may be a part of the solution. It needs to be handled by reconsidering what collection of objects are needed to represent the pipeline of tasks that need to be performed in a step by step way (with clear and single responsibilities). E.g. Is validate_data a function on some kind of Parser actually, which returns a ValidatedData object, which can calculate its own tax. To be honest, you're best off not refactoring at all until you've seen the shape of one of those little task pipelines, those responsibilities, and can pull one out into a new set of classes.
Anyway. If you are doing inheritance and adopt the first way you mentioned then you're kind of doing something which is better done by composition rather than inheritance as the other posts/comments have pointed out. With inheritance you can specify a common function implementation in the base class for convenience but that's not the primary reason to use inheritance so, if it's your only reason, you should be using composition.
Class MyDoEverythingClass-- Trouble already. See "Single Responsibility Principle."