Wait and wait are the same. People saying Wait is used for signals are right but at the same time wrong in the context of this topic so please ignore them.
I believe the second argument for wait returns the CPU elapsed time.
Roblox’s Lua, like the regular Lua, used to be flatcase but, if I remember correctly, briefly attempted to switch their engine specific globals to Pascal. Later, they also changed all the API functions to Pascal, which is why you see so many alias’.
However, following the pattern of Engine Specific = Pascal, they did Wait(). But, simply speculating, they later decided these boiler-plate functions/globals, given they’re so frequent and necessary, should be flatcase (… and messily sometimes camelCase, and Pascal, ergo UserSettings()). This is probably because Lua globals like coroutine are, again, flatcase. Other examples are Workspace turned into workspace, Game turned into game, and finally, Wait() turned into wait(). It helps people mentally box together that lower case things are globals and pertain to fundamental interaction with the engine.
We use task.wait() now simply because its faster and doesn’t use the old LuaSettings.DefaultWaitTime and it doesn’t use the legacy scheduler, which was slower.
As for what it returns, the two variables are just how much time elapsed and the current game time.