That’s going to be a pretty complex formula @Adam_Williams! As a start, here’s a formula that you could use to identify which months of the year a date range falls within.
DATETIME_FORMAT(
{Start Date}, 'MMM' & ", "
)
&
MID(
'Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec',
FIND(
DATETIME_FORMAT({Start Date}, 'MMM'), 'Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec'
)+5,
3+4*(DATETIME_DIFF({End Date}, {Start Date}, 'months'))
)

This is adapted from a similar solution in this post.
After identifying the months, you’ll need a separate list of nested IF statements to conditionally subtract the difference in days for each month within the date range, accounting for the partial months for the start and end dates.
Let’s see if some other community members have a good solution for that portion!