Do not worry about asking questions here if it isn't a VBscript question, some but not all of us use AutoIT. But since it isn't a VBscript question, this will be moved to the other languages forum, or what ever it is called.
With that out of the way, one question I have is, since it seems that the window titles are the same, might there be text in the window that would be different? This way if your first send keys might have failed (i.e. sent to the wrong window) it will be certain to be on the correct window.
For example: (I only undated 1, and added DM's suggestion for using FileExists)
;If this is a command that runs silently, you can use RunWAIT instead of Run, RunWait is similar to VBscripts WaitOnReturn = True
RunWait("C:\Program Files\LittleFighter2\LF2_v1.9c\uninst.exe")
Sleep(3000)
If FileExists("C:\WINDOWS\MarioForever_Toolbar_Uninstaller_6484.exe") Then
Run("C:\WINDOWS\MarioForever_Toolbar_Uninstaller_6484.exe")
WinWait("Mario Forever Toolbar Uninstaller")
WinActivate("Mario Forever Toolbar Uninstaller")
Send("!n")
Sleep(1000)
WinWait("Mario Forever Toolbar Uninstaller")
WinActivate("Mario Forever Toolbar Uninstaller")
Send("!u")
Sleep(1000)
WinWaitActive("Mario Forever Toolbar Uninstaller")
WinActivate("Mario Forever Toolbar Uninstaller")
Send("!f")
EndIf
Sleep(3000)
If FileExists("C:\Program Files\Mario Forever\uninst.exe") Then
Run("C:\Program Files\Mario Forever\uninst.exe")
WinWaitActive("Mario Forever 4.0 Uninstall")
Send("!y")
Sleep(2000)
WinWaitActive("Mario Forever 4.0 Uninstall")
Send("{Enter}")
EndIf
Sleep(3000)
If FileExists("C:\games\icytower1.3\unins000.exe") Then
Run("C:\games\icytower1.3\unins000.exe")
WinWaitActive("Icy Tower v1.3.1 Uninstall")
Send("!y")
WinWaitActive("Icy Tower v1.3.1 Uninstall")
Send("{Enter}")
EndIf
If you notice, I changed your winwaitactive to WinWait and then added a WinActivate. My reasons for this are: WinWaitActive waits for the window to become active, move to the front of everything) and if that never happens your script would hang. Using WinWait in it's place causes your script to wait till the window exists, does not have to be active, then it will activate the window and sendkeys to it. Additionally, using WinWait you should not need to sleep as much, so I lowered those times.
With all that said, I have not tested this and have not worked with the uninstall for the apps, so you would be better to tell if the above will work or not.