Yes, if WiFi works in safe mode then the problem must be something you installed. Unfortunately, there's no way to pinpoint the guilty party except common sense and trial and error. For the troubleshooting described below, the phone should be started normally, not in safe mode.
First, do the obvious thing and go through the app's you've installed and uninstall or Disable anything that uses a data connection. You can skip apps that came on the phone such as the default email app browser, etc. They're not the problem.
Second, if you have installed any, uninstall ALL task killers, RAM memory optimizers/boosters, battery savers/repairers, cache cleaners, etc etc. None of that stuff is necessary. Such apps are actually counterproductive and some are just plain evil. They actually waste power and disrupt critical system processes and degrade performance. Many are so poorly coded that they cause trouble in unexpected places not even related to the app's actual function so they're potentially guilty of causing WiFi gremlins. You should uninstall these apps even if you don't have a WiFi problem.
If you still have trouble it gets harder to find the problem. You might try installing System Panel and looking through the process listings, then killing any that have any possible interaction with the WiFi.
Note: I do NOT advocate killing tasks! But in this case it could be necessary for troubleshooting.
Of course, if the problem is still not found, there's always the nuclear option - a factory reset. Don't forget to do backups!
Android since v1.0. Linux since 2001.