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