well for different layouts I would probably use a flag to 'tell' CR how to display the data, then you could use conditional suppression to hide/display sections so the data is formatted as desired.
As for the first issue, you would need to create a formula of some sort that identifies which week each record belongs to based on it's date, but what exactly that would be I don't know as you have business rules that dictate when weeks start and stop and what constitutes a 'random' date range.
In pseudo code, the fomula would appear to be something like:
if startDate is monday then
group value = (record date - start date ) / 7
else
group value = record date
at least top part should work, but again, the actual rules will apply
HTH