is their use just to help the user know the right arguments to pass?
Yes, and if you provide their static types, that information will be included too. For example, when the editor creates a new signal connection function for you.
signal item_dropped(value1: String, value2: String)
it still shows as a var in the editor though, and when i create a new connection it does add the parameter names, but not the static typing if I’m doing it right
As far as I am aware statically typed signal parameters has not been not implemented yet. This syntax won’t throw any errors, but it is also not enforced (so basically the types you provide are simply ignored).
Signals do not check the arguments when emitting nor when connecting. This is the same for signals in native nodes as well, you could emit a toggled signal from a button without passing any argument and nothing will stop you.
You will get errors if there is a mismatch in arguments only when the connected function is actually called.
I’ve seen discussions about enforcing this at connection/emission, but nothing concrete. Since it’s not done by the core it is a bit tricky to do on the GDScript side.