Try kickstart It is a pre-made config but contrary to the heavy weight distributions out there, it's rather simple and documented.
Neovim
I'll +1 this guy. Is this the 100% best way? No idea, but there are going to be a bunch of ways. The less preconfigured options, the better. As you use it, your configs will be molded to your preferences so a minimal start is ideal and will give you a good sense of direction.
Good luck and happy vimming!
another way to start is to only do small configurations at first. as you code maybe you realize you want a tool that shows git diffs, install a plug-in that does that. over time, you gradually build your config. maybe you want to start using leader
for custom key maps. a couple days later maybe you think you want a file picker so you add telescope. this 100% will take longer, but you'll intimately understand why every line in your config is there.
I agree with this. This worked fore when I started. I also used git to manage my config. So I could branch before trying various things and so on and easily return to working configs.
You are not done one the config is written: A configuration requires maintenance effort: New plugins get released, others stop getting developed, APIs change. You constantly need to adapt your configuration.
That is why I recommend using a distribution like astonvim. A distribution takes care of keeping the basics going and gives a well msintained base and thus gives you more time to fiddle with the interesting bits of the configuration.
Astronvim in particular is "just" a lazy nvim config and very easy to customize, filtering the standard override process defined by the lazy plugin manager.
I actually got rid of most custom config I had on top of astronvim by using its community repository: It contains easy to add config snippets that fully integrate other plugins with all the plugins in the astronvim config (lsp setup, treesitter, snippets, completion, ...). This ranges from adding one plugin to entire language packs with all the recommended bells and whistles to work with some programming language.
If you haven't used it already, using / reading thru something kickstart.nvim will hopefully help. The aim of kickstart is to have a usable starting point that is simple/small enough to read through and understand what is going on, with some guidance on what to do to extend it further.
https://vonheikemen.github.io/devlog/tools/build-your-first-lua-config-for-neovim/
Check his other blog posts tagged with neovim.