If I understand your question I [previously wrote a function][1] for this purpose. 
The core of that function is:

 dynP[l_, p_] := 
 MapThread[l[[# ;; #2]] &, {{0} ~Join~ Most@# + 1, #} & @ Accumulate @ p]

(See the post linked above for a version with extended syntax.)

**Version 8 users have ``Internal`PartitionRagged`` which has the same syntax for the basic case.**

 dynP[Range@6, {1, 2, 3}]

> {{1}, {2, 3}, {4, 5, 6}}

 dynP[Range@8, {3, 1, 2, 1}]

> {{1, 2, 3}, {4}, {5, 6}, {7}}


 [1]: http://stackoverflow.com/a/5433867/618728
 [2]: http://stackoverflow.com/a/5433867/618728