#C++14, 340 bytes

<!-- language-all: lang-cpp -->

As generic unnamed lambda. First parameter `L` is the list as `std::list` of floating point type and second parameter is the desired output stream, like `std::cout`.

    #import<cmath>
    #define F(x)O<<x<<'\n';
    #define Y l=k;++l!=L.end();
    #define A auto
    [](A L,A&O){A S=L;A l=L.begin(),k=l;A n=L.size();A s=*l,p=s,d=s*s,h=n/2.;for(S.sort(),Y s+=*l,p*=*l,d+=*l**l);for(l=S.begin();--h>0;++l);F(s)F(p)F(s/n)F(*l)for(Y)O<<*l-*k++<<",";F(' ')for(A x:S)O<<x<<",";F(' ')F(S.front())F(S.back())F(sqrt((d-s*s/n)/(n-1)))}

- -1 byte thanks to  Zacharý

Ungolfed:

    #include<iostream>
    #include<list>
    
    #import<cmath>
    #define F(x)O<<x<<'\n';
    #define Y l=k;++l!=L.end();
    #define A auto
    
    auto f=
    [](A L, A&O){
      A S=L;                  //copy the list for later sorting
      A l=L.begin(),          //main iterator
        k=l;                  //sidekick iterator
      A n=L.size();
      A s=*l,                 //sum, init with head of list
        p=s,                  //product, same
        d=s*s,                //standard deviation, formula see https://en.wikipedia.org/wiki/Algebraic_formula_for_the_variance
        h=n/2.;               //for the median later   
      for(
        S.sort(),             //now min/med/max is at known positions in S
        Y //l=k;++l!=L.end(); //skip the headitem-loop
        s += *l,              //l points the next element which is fine
        p *= *l,              //since the head given at definiten
        d += *l * *l          //needs the sum of the squares
      );
      for(
        l=S.begin();          //std::list has no random access
        --h>0;                //that's why single increment loop
        ++l                   //until median is crossed
      );
      F(s)  //O<<s<<'\n';     //sum
      F(p)                    //product
      F(s/n)                  //average
      F(*l)                   //median (in S)
      for(Y) //l=k;++l!=L.end(); //set l back to L
        O<<*l-*k++<<",";      //calc difference on the fly
      F(' ')
      for(A x:S)              //output sorted list
        O<<x<<",";
      F(' ')
      F(S.front())            //minimum
      F(S.back())             //maximum
      F(sqrt((d-s*s/n)/(n-1))) //standard deviation
    }
    
    ;
    
    
    using namespace std;
    
    int main() {
     list<double> l = {10,3,1,2,4};
     f(l, cout);
    }