Ok, your game is 3D and performance is slow on android.
The first thing I'd do is to connect your android device via USB (you probably already did) and run it directly by one-click-deploy from the editor. That way you can also use the profiler.
Hopefully, Godots profiler can tell at least if gdscript/code is responsible for the slow android performance or not. In the (more unlikely) case that it actually is, you might be able to identify the function which uses most processing time. Then you know where to optimize instead of guessing around.
You can also enable/disable meshinstances / shadows / light sources in the scene tree (there should be tabs to switch from the editor scene tree to the runtime scene tree) while the app is running and watch how the impact on performance is.
But normally, the graphics are the bottleneck on mobile devices. Usually, RAM is not the issue (too much RAM use may only lower the compatibility hence kill the app on low memory devices when it runs out of memory).
The complexity (number of tris/vertices) of Meshes can be an issue but less than one might think.
Most of the time Shaders ARE the issue for low performance. Godot uses/has to use shaders implicitly for many 3D operations. The more shaders have to be used and the more complex shaders are the slower the device will get.
So if you have checked that gdscript performance is OK then focus on optimize GPU performance:
Step one: If possible then use GLES2 instead of GLES3. Ok, GLES2 may look a bit less fancy but its standard shaders are much less demanding on low performing hardware. However, If you use particles, GLES2 will require a different/alternative approach (CPU Particles).
Step two: Optimize lighting/shadows. Shadows require noticable performance as well as shadow filters (project settings). Try to use only one light source (sun?) + maybe ambient lighting whenever possible. Disable Shadows in the profiler to see how much it affects performance. Maybe it is possible to disable receiving and/or casting shadows for certain complex/big meshes.
Step three: Optimize the Mesh complexities. You should be able to see the performance impact when enabling/disabling visibility in the debugger (while running on android). Normally it is not a problem when you've got a player mesh with 10k or 20k vertices. But it IS a problem when you've got 100 trees with each having 10k vertices. Some 3D editors offer methods for lowering the vertices of a mesh. Blender i.e. has a modifier for that. (Always make backups of the original 3d models)
Step four: Have a look on the materials and shaders, especially fragment shaders. And things like relflections/emission.
Now to your questions:
AI path finding. Yes, complex scripts may be a reason for low fps. But this is simple to identify: Temporarily disable the script and run the game on android. If the fps doesn't change -> search elsewhere.
Free-ing and reinstantiateing objects:
If those objects have scripts with process or _physicsprocess attached then those might use some CPU. But you can simply pause the processing when the object is invisible. Other than that free-ing an object will/might save RAM which is not equal to a performance gain. Making an object/meshinstance invisible will normally stop any GPU load from it. Which is what you usually want.
Saving and reading player stats to/from a file
Basically, only save to a file when you need that data the next time the app runs. These are usually thinks like game options, scores, player name.
Do not write often to files on mobile devices. Usually you write when a game option has been changed, when a level was completed, when the game is closed/paused/sent to background. Why? Because mobile devices internally use flash memory. These have a very limited number of possible write operations. If you write ridiculously often to files then this increases "wear" and will kill the device sooner or later. (Ask Tesla owners which paid $3000 for a new on-board computer because Tesla killed the old ones by deciding to write a ridiculous high amount of log data on the flash memory.) So: don't use files to optimize game performance. Use them simply to make data persist.