You assumed the variables minutes, seconds and milliseconds will update as you update the variable time_elapsed in the process function, but they will only update in the main game loop when they are also put in the main game loop inside either methods Node._process() or Node._physics_process().
Also I have never seen string 'mm:ss:ms'. If I saw that in a game I would think it would represent 'hh:mm:ss', I would suggest using 'hh:mm:ss.ms' or 'mm:ss.ms' in a function, but that's just my opinion.
I would write your code something like this:
extends Control
var time_elapsed:float = 0.0
## I assume Speedclock is a child node of type Label here.
onready var speed_clock: Label = $"Speedclock"
func _process(delta: float) -> void:
time_elapsed += delta
speed_clock.text = seconds2hhmmss(time_elapsed)
func seconds2hhmmss(total_seconds: float) -> String:
#total_seconds = 12345
var seconds:float = fmod(total_seconds , 60.0)
var minutes:int = int(total_seconds / 60.0) % 60
var hours: int = int(total_seconds / 3600.0)
var hhmmss_string:String = "%02d:%02d:%05.2f" % [hours, minutes, seconds]
return hhmmss_string