Aiden, a few clarifications (and a possible workaround):
1) The time CF uses is actually controlled by the Java underlying CF. And by default the JVM uses the system's time (that can be changed, with a timezone JVM arg used in CF's jvm configuration. I can share more, if interested.)
You say, "When a ColdFusion datetime is output to the page, no UTC offset is displayed", and that is true. I just shows the time on the server, without ny indication of offset. You add that this leads you "to assume it didn't account for" the offset, and that's true insofaras the datetime object as displayed: it's just the datetime in question...except for a couple of things...
2) The dateConvert() is indeed an odd animal. Its purpose IS to give you what the time would be in DST, as you have shown.
The problem is that if you use it in a date/time comparison, it acts as if it's the same date/time from which it was converted....and that's because it IS the same date and time (under the covers), it's just presented differently in terms of reflecting that UTC offset--for better or worse. That's why your datecompare showed a result of 0 (they are the "same time", at least internally.)
And technically, they're also NOT the same TYPE of underlying java objects. You can view that with code like this (within your existing CFOUTPUT), at least assuming that the CF Admin feature to "Disable access to internal ColdFusion Java components" is off:
now classtype: #Now.getClass().getName()#<br>
utcnow classtype: #utcnow.getClass().getName()#"<br>
The former shows to be a coldfusion.runtime.OleDateTime, while the latter shows to be a coldfusion.runtime.UTCOleDateTime. Subtle difference, but it seems related to the issue you observe.
And the fact that dateconvert returns that object (and leads to the problem you are reporting) seems new behavior since CF11 (in 2014), when the observation was raised in a tracker ticket CF-3777192. There was never any resolution, nor even any acknowledgement from Adobe of there being a change in behavior then. And clearly it's not changed.
Nor was any workaround offered by anyone. But I think I can offer one.
3) First, you ask "is there any way to access" the timezone offset, and indeed there is--using that very dump of the GetTimeZoneInfo that you offered at the bottom, you can know the offset amount (though that's for CF as a whole rather than for any given datetime, as you asked about above).
But second, you could USE that info to get what the more correct comparison you want (using those variables). More specifically, I suspect you were using the dateconvert just to get the time AS IF it was UTC. You CAN get that.
It just entails adding that offset back to the time in question (like when using now()). Again, this example is written in tags (as you had done), and presuming to still be within the CFOUTPUT pair you were using. Note that I create a new utcnow2 variable:
<cfset utcNow2 = dateadd("h",GetTimeZoneInfo().utcHourOffset,Now())>
utcNow2: #utcNow2#<br>
datediff(now, utcNow2): #datediff("h", utcNow2, now)# (number of hours difference between now and utcnow2)<br>
dateCompare(now, utcNow2): #dateCompare(now, utcNow2)# (a -1 result means now is earlier than utcnow2, while 1 means the opposite, and 0 means they are equal)<br>
Note how utcnow2 does now have the current time, as UTC time, and I show how you can use THAT in both a comparison which DOES reflect the correct time difference--which of course it should, as we simply subtracted or added the offset from the current time. And same with the datediff I offer. (And all this is assuming, as you say, you run this code on a server where the java/cf time is indeed not currently on UTC time--otherwise there's no time difference but the code still works.)
You might consider adding a vote to that tracker ticket, but if so I'd suggest you open a new ticket (since that one is marked "closed"). Still, I'll go ahead and add a link to this discussion there (on that old ticket), in case someone else comes across it and wants to hear a more recent discussion (and might perhaps benefit from the workaround I've offered).
Let us know if this helps. And again if you want to get Adobe's attention on the matter, they may not respond here but eventually should see the ticket. If you do file one, please add a link for it here (or the number) so that others can consider adding votes and get notified of changes regarding it.
PS Oh, and you point out, "No ColdFusion option in Insert Code Sample. Seriously?!?" I'll note that I've never even noticed that drop down. I just always added my code in the popup, and of course CFML works fine in the default html/xml option. I guess you looked for another value in case it could make a difference, and fair enough. But I've also never seen anyone else ask about it. Sadly, many folks just plunk code into a message without even noticing that UI element to present it distinctively, which is indeed very helpful.