It’s been a long time since I’ve done this, but here’s the general idea.
I’m assuming you’d never use a weekend or holiday date for either entered date (you’d want to code restrictions into your form to be sure).
Calculate the total days between with DateDiff.
For weekends, if it’s never more than a week between referral and review (again, code requirements into your form), then the easiest is just to compare the Weekday formats for the two dates. (Weekday format numbers each day as a day of the week; default is 1 for Sun thru 7 for Sat.) If startdate weekday > enddate weekday, then you’ve had a weekend in between, so delete 2 from your total. In your example, startdate is Friday = 6 and enddate is Monday = 2. Since 6 > 2, you know it crossed a weekend. The only problem is times more than 6 days apart (e.g., Friday and Friday) because you start repeating the weekday value.
If that won’t work with your requirements, you have to count the number of Saturdays in between and Sundays in between and then subtract those numbers from your total. It’s something to do with counting the weeks, but I’d have to work a lot harder to remember how that’s done, so I didn’t bother. If you need that, say so. 
For holidays, you’ll need to set up a table and list the holiday dates. (A lot of them could be calculated, but I’d bet you’d spend more time figuring out how to do that then you’d spend typing the next 10 years of holidays into a table.)
Then you just query for the count of holiday dates in between your dates and subtract that from your total.
Make sense?
OTOH, if you’re actually calculating working hours, that’s something else again.
You might try searching Access Help and online for this. It’s been done many times, so you could probably snag some code.