What is the difference between color models (sRGB, Rec709, XYZ, ets) and which cases I need to prefer one of them?
Prerequisite

I think the right word here is color profils not color models.
A color profil defines 3 things:  


The white point (what is white)
The primaries (e.g. : R,G,B...)
The transfer function (the contrast curve applied e.g. gamma, Log...)





You may think why defining white? White is white no?
In fact there is no absolute white.
Think to a paper sheet, most of them are "white", but if you look at it under an overcast sky, it's not the same white as if you look it with the direct sun light.
It's colored a bit in "blue" if overcast, "red" / "orange" if direct sun.
It's the same here, you can have different white point, with slightly different HUE.
For exemple the sRGB white point is D65 (see the picture below), but you have D60 white point...  







The primaries, it's the same as "black" and "white" we need to define them. For RGB we need to define what R, G, and B are, it also defines the boundaries of the colors you can display in the color space.
For sRGB it's the triangle made by the position of R, G, B.
  


Remember sRGB is a limited color space made for screen display (3 subpixels R,G,B value range 0 to 255), but there are plenty of colors outside this color space.




The transfer function is a mathematical function that change the contrast of the displayed pixels. (gamma, EOTF, OETF, Log are some functions that can be used)
It's the curve you are playing with to contrast your image.   


  



Answer

With that in mind, sRGB, Rec709... have differents 1., 2., and 3. They are for different purpose and it's the answer to your question, you need to choose the one corresponding to your need  

In Blender with the default config you have Display device that defines the white point (1.) and the primaries (2.), the view that defines the transfer curve (3.) and you have the look that is a creative transformation of the image, contrast or color tint.  

Color profils are applied at the verry end of the chain, so juste before displaying the image or when saving it.
It means that all the compositor transformations you make are applied on a linear image, so all datas preserved but when saved, the image lost information if non 32bits linear.  

So exept for some cases, e.g. basic drawing without light interaction, it's always better to use filmic to view your viewport, even if you save it in linear 32bits at the end.
With filmic what you see correspond to how light intensity works in real life, it's not the case in sRGB / Default setup.



E.G. of use:

For display :  

sRGB : is for typical 8bit CRT monitor display, so for web, photo display... 
I think Apple use a different profile but I don't have Apple devices so I can't say more.  

Rec 709 : is for TV/Cinema display 

For post prod :  

CIE XYZ :  In blender with the view set to Log you have the typical washed out picture used by studios before color gradding video footage. 

Linear space : That isn't a color space since colors aren't defined, it's the scene referred space, it's what Blender calculate internally and how light intensity works in real life. It can't be displayed correctly on a CRT monitor, but keeps all the original datas if the picture is saved in 32bits.

For convertion/compare between different spaces :  

CIE LAB : is an absolute color profile, like a reference to calculate all colors even colors that cannot be reproduced in the physical world.  

More about the topic :  


  



EDIT 1 : More infos about workflows

Remember, you can preview picture with one configuration and save/export with an one other one, if you know well what's your needs, how color management and color spaces work.
I agree with Troy, color management in Blender is messy, but not only color management there are other part that involved with color management that aren't suited for linear, but it's an other story.  

It's not only Blender, I use Affinity Photo, you can't work in 32bits correctly and I don't speak about Photoshop...
All of that because Color management, color spaces, and the different transformation of the chain are really hard to understand and need something close to devotion. But it's really worth it.  

About your workflows, since you don't have specific workflow I give you what I usually do:  

Blender previsualisation :
Preview in sRGB / Filmic (filmic is a kind of Log encoding)/ High contrast (contrast depends of the final look you want), render an image of the sequence, color grade with the compositor node Color balance, set the type to Offset/Power/Slope (ASC-CDL), then it start to really depend of the needs.
You have to ask yourself, is this shot the final video wich will be diffuse or, will the final grade be made in an external software?  

Final video :
Render your sequence with the same color management setup and compositing, and export in the format you want.
For web, screen display, Tiff 8bit, Avi, MP4... this will gives you a sRGB with the maximum light info baked but no more room for playing with intensity of light (contrast, exposure...)
If you work on Apple change sRGB for P3...  

Video that is color graded in an external software :
Render you sequence without the color balance node active, in .EXR 16 or 32 bit (if 32 is too heavy), this time you have a 16/32 bit linear output (so no color space baked). Than you can import in Resolve for exemple, change the color space to whatever you want and do the color grading, adding LUTs...
Export the vidéo to your needs e.g. : DCP (jpeg2000)...

Hope this is clear enough.