Hi Drew,
With your suggestion, I added text labels for every date time display. This really helped.
I think we've figured out that it was the interpretation of the value from the button press of our select meeting time.

Text formula:
If(!IsBlank(ThisItem.Data.MeetingTimeSlot),
/*
Retrieved times are in UTC. This converts and displays them to local region time
*/
Text(DateAdd(DateTimeValue(ThisItem.StartTime), -TimeZoneOffset(DateTimeValue(ThisItem.StartTime)), Minutes), "[$-en-US]hh:mm AM/PM") & " - " &
Text(DateAdd(DateTimeValue(ThisItem.EndTime), -TimeZoneOffset(DateTimeValue(ThisItem.EndTime)), Minutes), "[$-en-US]hh:mm AM/PM")
)
OnSelect:
Set(FollowUpStart,ThisItem.StartTime);
Set(FollowUpEnd,ThisItem.EndTime);
I was then doing an interpretation of that value and adding 10hours.
StartTime Date: DateAdd(DateTimeValue( FollowUpStart, "en"),10,Hours)
StartTime Hours: [Text(DateAdd(DateTimeValue( FollowUpStart, "en"),10,Hours),"hh")]
StartTime Minutes: [Text(DateAdd(DateTimeValue( FollowUpEnd, "en"),10,Hours),"hh")]
This is where I went wrong. For some reason, and today it actually happened to me - people would come up with the hour off. Which made me dig back into the pieces.
My colleague and I worked out that we need to match the original format allowing the app to do the time conversion instead of me just trying to add that time conversion myself. The below formulas are where we landed.

[Text(DateAdd(DateTimeValue(FollowUpStart), -TimeZoneOffset(DateTimeValue(FollowUpStart)), Minutes), "[$-en-US]hh")]
[Right(Text(DateAdd(DateTimeValue(FollowUpStart), -TimeZoneOffset(DateTimeValue(FollowUpStart)), Minutes), "[$-en-US]hh-mm"),2)]
[Text(DateAdd(DateTimeValue(FollowUpEnd), -TimeZoneOffset(DateTimeValue(FollowUpEnd)), Minutes), "[$-en-US]hh")]
[Right(Text(DateAdd(DateTimeValue(FollowUpEnd), -TimeZoneOffset(DateTimeValue(FollowUpEnd)), Minutes), "[$-en-US]hh-mm"),2)]
Thank you so much for your help. I don't think we would have found an appropriate solution without your guidance.
Tia