Here are each of the descriptions in the documentation:
Native image datatype. Contains image data, which can be converted to a Texture, and several functions to interact with it.
A texture works by registering an image in the video hardware, which then can be used in 3D models or 2D Sprite or GUI Control.
A node that displays a 2D texture.
The difference as far as I understand it is that an image is a raw data container. A texture is a container with particular flags attached to it that makes it compatible with processes that uses textures specifically. A sprite is a node that (most often) contains a texture, but has several other control functions.