How to normalize the tables inside PostgreSQL database
The “second guy” probably doesn't understand relational database very well.
If a person has relationships with universitys and companys, add a table person_university that has foreign keys to both person and university and contains the details of the relationship. The primary key of that table would be a composite one, consisting of the two foreign keys. The same for companies.
That is the canonical way to store such relationships in a database. What you cannot model that way is the limit of three, but that can be handled by your application.
I am building social network platform where users can register to their profile, fill it up and create events for the others. My problem is that I don't know what is the best approach to create tables.
One guy told me I should normalize table, meaning - he wants me to create separated tables for city, country, university, company and later connect those information with an SQL Query, which makes sense for me. If I will get 100 of students to sign up from the same University it makes sense for me to call only one University Name from University table instead of having rows and rows with university name filled in - it's data redundancy. 
However, the other guy told me, it's a bad practice, and I should put all information inside one user table - firstName, lastName, profileIMG, universityName, CompanyName, cityName, CountryName and so on. He says more tables create more problems. 
From my part, I do understand the logic of the first guy, but here is my other problem. As I mentioned, users fill up their resume in their profile and I want them to be allowed to add up to 3 universities they had been attending - bachelor degree, master degree, and postdoc. The same I want to allow them with companies - they can add up to three previous companies they worked for. 
I thought I will create University table where I will have this: universityName_1, universityName_2, universityName_3. The same I want to do with the company table. 
Is this a good practice? 
Maybe, I just should create the university Table with an UniversityName column, and when it comes to retrieving data from database, I would just use SQL query inside my Django project to call a specific University for the specific position? Like I call Columbia University for 2nd position (universityName_2)? 
I am very new to this topic! I hope that I presented you my problem clearly!