Help me manage my time
JavaScript (ES6), 317 310 291 bytes

(a,b,c,d)=&gt;{u=0;c.split`,`.map(m=&gt;{p=m[s]`-`;for(q=n=p[0];n&lt;=(p[1]||q);r=++u)c+=","+n++},c="");c=c.split`,`;x=d.map(p=&gt;"SuMoTuWeThFrSa".search(p)/2);for(g=[];a&lt;b;a.setTime(+a+864e5))x.indexOf(a.getDay())&lt;0&amp;&amp;(t=y=g.push(a+" "));return g.map(w=&gt;w+c.slice(u-r+1,u-(r-=r/y--+.99|0)+1)).join`
`}


Usage

f(new Date("2015-09-17"),new Date("2015-09-27"),"5,1-4,6,10-13,20-27",["Su","Tu"])
=&gt; "Thu Sep 17 2015 10:00:00 GMT+1000 (AUS Eastern Standard Time) 5,1,2
Fri Sep 18 2015 10:00:00 GMT+1000 (AUS Eastern Standard Time) 3,4,6
Sat Sep 19 2015 10:00:00 GMT+1000 (AUS Eastern Standard Time) 10,11
Mon Sep 21 2015 10:00:00 GMT+1000 (AUS Eastern Standard Time) 12,13
Wed Sep 23 2015 10:00:00 GMT+1000 (AUS Eastern Standard Time) 20,21
Thu Sep 24 2015 10:00:00 GMT+1000 (AUS Eastern Standard Time) 22,23
Fri Sep 25 2015 10:00:00 GMT+1000 (AUS Eastern Standard Time) 24,25
Sat Sep 26 2015 10:00:00 GMT+1000 (AUS Eastern Standard Time) 26,27"


Explanation

(a,b,c,d)=&gt;{

  u=0;                                                 // u = total chapters
  c.split`,`.map(m=&gt;{                                  // c = array of each chapter
    p=m[s]`-`;
    for(q=n=p[0];n&lt;=(p[1]||q);r=++u)                   // get each chapter from ranges
      c+=","+n++
  },c="");
  c=c.split`,`;

  x=d.map(p=&gt;"SuMoTuWeThFrSa".search(p)/2);            // x = days to skip
  for(g=[];a&lt;b;a.setTime(+a+864e5))                    // for each day between a and b
    x.indexOf(a.getDay())&lt;0&amp;&amp;                          // if this day is not skipped
      (t=y=g.push(a+" "));                             // add it to the list of days
                                                       // t = total days
                                                       // y = days remaining

  return g.map(w=&gt;w+
    c.slice(u-r+1,u-(r-=r/y--+.99|0)+1)                // add the chapters of the day
  ).join`
`
}