In short:
- Use "non-color" for inputs that are supposed to be spatial (3D) vectors or simple factor values.
- Use one of the others (depending on your needs) for what is effectively a color.
More details:
I've dig a bit into Blender code and into OpenColorIO (OCIO) documentation and my (very young and superficial) understanding is the following.
Blender uses a processor component to handle image data. This processor can be based on OCIO or be a 'fall back' one if OCIO is not present (I don't know why it could be absent... maybe to allow Blender to run on some low level hardware?).
The main goal of OCIO is to allow to transform image data into device rendered image data which fits the best to human eyes perspective as (for instance) our perception of light intensity is not linear (so intensity can be coded or manipulated linearly, as it is, but rendered differently). But more globally, OCIO can process image data transformation 'the way you want'.
OpenColorIO is a set of libraries (programs) that are provided OCIO organisation and these libraries are open source.
From that, when an image is processed (in our case for texture nodes) it is given to OCIO to do it. And OCIO is based on a configuration that can be found in 'Your installation path\2.8\2.80\datafiles\colormanagement'.
In this directory, we can find a file called 'config.ocio' (describing the possible configurations) and two subdirectories 'filmic' and 'lut' (containing data tables used by these configurations).
LUT stands for 'look up table'. For image calibration it has been defined by Academy Color Encoding Specification (ACES). Linear ACES is one of the possible option for the texture node.
Filmic is another calibration approach. The best is to read this answer from troy_s to know more.
The general principle of OCIO configuration seems to be giving a range to the input data and apply a transformation table to it. Transformations can be direct or reverse.
Concretely, what about 'XYZ', 'sRGB', 'Raw', 'Non-color', 'Linear ACES', 'Linear' and 'Filmic-Log'?
XYZ
'XYZ' is not 3D vector (x, y, z).
CIE XYZ is a calibration and its result is analogous to the LMS color space which corresponds to the cones response of the human eyes.
Y is the luminance. Z is nearly the blue. X is a mixing factor. The response value for them is defined in the OCIO configuration.
This is a transformed data.
sRGB
Stands for Standard RGB and is the "default color space for byte image" as defined in 'config.ocio'. It also has a transformation table defined in it.
This is a transformed data.
Raw
'Raw' is the image encoded data as it is. There is no transformations for it.
This is not a transformed data.
Non-color
This is similar to 'raw' from the calculation point of view. But it is semantically different as it is for things we know to be 'non color'. The comment in config.ocio says "color space used for images which contains non-color data (i,e, normal maps)".
This is not a transformed data.
Linear ACES
It is transformed by OCIO. The configuration is linear (as said in it name) and is done from a table giving parameters of this operation for each color channel.
This is a transformed data.
Linear
Correspond to Rec. 709 (Full Range) and is commented as 'Blender native linear space'.
This is a transformed data.
Filmic-Log
Again please refer to this answer. It is commented as 'Log based filmic shaper with 16.5 stops of latitude, and 25 stops of dynamic range'.
This is a transformed data.
A link to OCIO configuration in the Blender repository.
Note:
When using an image texture node, the color space information is given by or set to the image texture itself. This is not a node property. So that, if you set the color space in one material, this will affect all the others that are using the same texture.