I have discovered these two functions accidentally when searching for something else. I was trying to find more information about them but there is nothing in the official documentation and these function can’t be found in any metadata view like sys.all_object etc. It looks like they exist in SQL Server from 2000 edition and they are used internally in special SQL Server objects like sys.spt_columns_odbc_view.
You can review how these two functions behave on any database and compare their results with sys.columns view max_length, precision, and scale columns:
SELECT DISTINCT * FROM ( SELECT t.[name], c.[max_length], c.[precision], OdbcPrec(t.system_type_id, c.max_length, c.precision) odbc_prec, c.[scale], OdbcScale(t.system_type_id, c.[scale]) odbc_scale FROM sys.columns c INNER JOIN sys. t ON [t].[system_type_id] = [c].[system_type_id] AND [t].[user_type_id] = [c].[user_type_id] ) a WHERE ISNULL([max_length], 0) <> ISNULL([odbc_prec], 0) OR ISNULL([scale], 0) <> ISNULL(odbc_scale, 0) GO
Based on this result I will say these two functions are just converting specific SQL Server-related data types length, precision, and scale to ODBC standard specification.