Understanding Scheduler Library? (And many application questions!)

tms8c8:
1)memory; I assume that the schedule requires separate "heaps" (right word?) for each "thread" that it runs.

Every "thread" has its own stack, the heap is shared for all threads. The stack contains all "local" variables, while the stack heap contains "global" and "static" variables. This means that every thread has its own set of local variables.

2)timing; how do I know when the scheduler will return to test the if statement in my code? I am under the impression that yield will pass the control to another task, but does that task have to complete before the scheduler returns to the main task?

A thread keeps the CPU busy between calls to yield(). If you want to manage the 1ms deadline, you should design your program in a way that there are no places where the time between two yield() calls is more than X, where X is 1ms / no. of tasks.
This is easily achievable in your own code, but you should be very careful using libraries.

BTW consider that the Scheduler is at a very early stage of development, and many libraries should be adapted to be scheduler-friendly.

Another approach is to use an RTOS, that hasn't the yield() problem (since the scheduling is done by the kernel using timer-ticks) but has other thread-safety synchronization issues to consider (and sometimes are very hard to handle especially for beginners). The forum user fat16lib has ported some of the most famous RTOS kernels to the Due, if you do a quick search on the forum you can easily find it.