I haven’t found a clear (simple) solution for this. I’d prefer to not use a plugin if possible:
I want to upload a large image and create 3 different sizes. - How can I do this?
I then want to use the small size for a thumbnail grid view. - How can I reference the smaller image?
I want to use the larger sizes in other spots on the site.
You can use a hook that resizes your images on upload, using the panel.image.upload and panel.image.replace hooks, have a look at the Image Shrink plugin as an example of how to do that.
If you then use a suitable naming scheme for your images, you can reference them by that name. Or use the standard thumbnail naming scheme and then fetch the images using the thumb helper.
BTW: Is there a reason why you don’t want to use the thumb method to resize images on the fly?