What is the correct way to organise and separate functions in a Controller into their own files?
There are a few things that you can do.


As already suggested by Jaypan, you can have as many controllers as you like, grouped by whatever makes sense for you. You can also have a base classes/hierarchy and re-use code through that
You can define services and also static classes/methods to extract re-usable logic (or also not-reusable logic). I'd say that's the 1:1 replacement for functions in include files. Services are defined in a yourmodule.services.yml and you can use dependency injection to make each service self-contained with explicit dependencies to other systems, so that you can also write (unit) test for that code.
You can also use Traits, a relatively new PHP feature that basically allows you to put a few methods into a separate file and include it in one or several classes where you can use them internally as if they were defined on that class. Kind of like a base class except that you're not limited to a single trait, you can have as many as you want.