This looks interesting, but I guess such questions should go into General Web Development & Application Design Issues subforum?
I never developed a forum/online-community type software, but I do have member profiles and private messages feature in my browser-game application. I believe you should start by designing the architecture of your software, usually a proper interface design takes longer than writing the actual PHP implementation code. In a multi-layered system, you need to properly separate your application into appropriate layers like Domain layer, Application Layer and Presentation Layer, while make sure not to mix code from one layer to another. Using frameworks will make it easier for you(it already does separation of concerns behind the scenes), but on the other hand you lose some flexibility/controllability of your web application.
In the meantime, think about what features you plan to implement for your project and how complex you need them to be. I am assuming yours is not an one-and-done application so you will continue to work on new features after its initial deployment. In this case, always design with future insights, try to decouple your classes from each other as much as you can so they can be easily maintained and extended in future. Security is another important thing to think about, for my own application I use a combination of Username, Password(original), Salt and Pepper with sha512 to create a highly complex hash, but there are other issues to worry about such as SQL injection and XSS attack. You probably want to read some online articles to see each security risk/attack possible for PHP application, a rule of thumb is never to trust user input data.
After the initial planning stage, you will start by designing the database structure/layout(unless you dont use persistent storage, its will be hard to believe). Your database tables usually map directly to your model classes(assuming you know what Model mean from MVC), so they are somewhat coupled to each other. A mistake made at the database design level will be difficult to fix in later application code implementation stage, so be extra careful here. When you have a database structure completed, write the corresponding domain models and fill in your business logic. It may not be easy to figure them out all at once, but development process is iterative so you can always get back to your business layer and make some changes later after you are more familiar with the needs for your clients. Note your database scheme and domain models are not application-specific, try to design them in a way that they can be easily ported from one application to another.
The very last step should be writing the application code and finishing off your presentation layer, these are application-specific and tied to the very forum/online-community app you are working on. If the business layer does not provide functionality needed by your application/presentation layer, you may now go back to the domain layer and add more logic to it. Lets say you have a Registration system, you will need the database for users to exist first, and then a domain model for registered users to work, before even starting to worry about the application code for user registration. Its not a good idea to reverse the order(unless you are doing big refactoring of a procedural legacy code trying to convert it into OO architecture, but this will be a different topic).
Once the Registration/Authentification system works, you will be able to design a User Profile system next. There are again some other design decisions you have to make, you probably will need to persist the user profile data so create another database table for user profile if you havent done that yet. It will map to another domain model for user profile, which depends on the user domain model itself(use composition to associate a user with his/her profile). At last, you can work on the application code and the actual presentation/HTML design for your User Profile page. To add other features to your application, repeat the same process, always design at database/domain level first and then worry about the application code, everything has to be done in a logical order.