How can I set up a counting up timer when I enter a trigger box and a trigger box at the end of the level that stops the timer?

Also another issue I have is that I have no idea how to register the play time between the trigger boxes so the time would be displayed at the levels end screen and saved in a scoreboard widget?

you can do this pretty easily by getting the game time. if you want to get the time between two points all you have to do is get the game time at the start point then subtract it from the game time at the end point. alternatively you could use the get game time since creation which is based on how long an actor has exited in the world. these node are affected by time dilation and pausing the game just so you know. below i posted a little script that when the player overlaps a trigger box it prints the time as an example.

But how can I display the time on the screen afterwards? And how can I save it to a score board?

it really depends on the situation, but you could easily add that information to a widget. just make a widget and have a variable in the widget, then when you create the widget just set the variable to the time value that you want.

in the example below i made a widget named time that had a text component, the text was bound to the value of a float variable also named time (had to make it confusing right). then on overlap with the trigger i create the widget, set the value of the variable, then add the widget to the viewport. oh and for testing purposes i also made it destroy itself after a few seconds.

Thank you!