Hopefully this will get what you're looking for.
For this example, I'm using the following SharePoint list. Note that I didn't know what you had for your Title, so I just put the name of the person. I also just used Course as a Single line of text instead of what looks to be a Lookup column in your list. Days Before Expiration is a calculated column that has the formula you provided in your last reply which works great.
=IF([Expiry Date]<TODAY(),0,DATEDIF(TODAY(),[Expiry Date],"D"))

For the colored rows, I used Format this column and set conditional formatting for the view.



Next onto the actual Power Automate (Flow).
IMPORTANT: I would definitely test with your own email address first before using the Created By Email to ensure it works as expected.
See full flow below. I'll go into each of the actions. Note that I've used a parallel branch. One branch handles items that expire today and the other branch handles items that will expire in 30 days.

The first branch handles items that expire today.
Get items Expired uses the following Filter Query.
ExpiryDate eq '@{formatDateTime(utcNow(), 'yyyy-MM-dd')}'

Apply to each Expired iterates through each of the items returned from Get items Expired and uses Send an email Expired to send the appropriate email content to each user.

The second branch handles items that will expire in 30 days.
Get items Expiring uses the following Filter Query.
ExpiryDate eq '@{addDays(utcNow(), 30, 'yyyy-MM-dd')}'

Apply to each Expiring iterates through each of the items returned from Get items Expiring and uses Send an email Expiring to send the appropriate email content to each user.
