Do entities need to have URIs? I am trying to figure out the best way to manage some data. I don't want it to be accessible like nodes through any kind of URI. I know that, when entities are defined, I have to provide a URI callback. Is this callback necessary?

I mostly want to use entities because the API makes it easy (and standard) to work with data.
You don't have to define a uri/URL callback.
Defining one won't make your entities visible to users, you have to create a menu callback to make them visible.