I've been debating over which sevices I should use and I can't seem to pick the best onr for my scripts. If someone can tell me what these services do and what they're good for, then that would be great.
ReplicatedFirst,
ReplicatedStorage, and
ServerStorage
ReplicatedFirst is primarily used for when the client is starting to load in, but it hasn't loaded completely. This allows you to use things such as custom loading screens, etc.
ReplicatedStorage is something that both the Client and the Server can "see". All items parented to ReplicatedStorage are, as you can guess, replicated, which means that the Client and Server knows its children "exist" in a way.
ServerStorage is something only the Server can see. Trying to access a child of ServerStorage on a local script will come up nil because the server never sent the data to the client about the child because it wasn't replicated. This is great for things you don't trust the client with or don't want the client to handle performance wise because the data won't be replicated to them.
I hope this sums it up a bit for you, if you need anything more feel free to comment and I'll try and respond.