I am trying to use a GameManager script to store and hold my players points, across multiple levels. The problem is that I have no idea how I should implement this. Should I declare the points variable in the GM script (starting at 0 of course), and use the GM to read the point value from enemies and objects I interact with and add them as needed, or is there some other, better way to do this?
First, check out the discussion about implementing singletons for best practices on for creating a persistent script. I typically have my level controllers keep track of things like scores and other states and update the global game manager when saving or changing levels. I find this approach to be more flexible when building and testing individual levels, but your mileage may vary.
Another pattern to consider is a persistent scene (with a Game Manager script and little, if anything else) and with actual scene content handled by loading (and unloading) scenes on top of it in an additive manner. This has the advantage of being relatively easy to implement with Addressables and avoids the controversial singleton pattern.