Without the try_convert function built in, I just did a simple
select convert(varchar(1), 234523); and got back the asterisk. What the meaning was when deciding to do this, I do not know. I would like something like this to fail in code.
This is an inheritance from the dark past.
Varchar is an older data type than nvarchar. The original behaviour of CONVERT was to not fail an entire set-based operation on a single error (a behaviourt that by the way is still often requested for many other operations), but allow it to continue - so the values that do not fit are presented as *, as a special "hey you might want to look into this" token.
When nvarchar was introduced, people were more in line with your and Ed's statement that a conversion that fails should in fact fail the operation. So for nvarchar, the behaviour was to error if the CONVERT fails. For backwards compatiility reasons, varchar was unchanged.
And when TRY_CONVERT was introduced, the idea was to stop CONVERT from erroring out a whole batch and instead use a special token -NULL in this case- to represent cases where CONVERT would otherwise fail. For long number into nvarchar, that was a failure so you get NULL. For long number into varchar, it was not - so this still returns the "old" token.