I'm currently building a multi platform desktop app. Should the app open by default in fullscreen mode?
No, a desktop app should remember the way it was set last time it was used - size, position and mode (minimized, maximized, normal) - and open in exactly the same way.
Please note that minimizing and maximizing a window changes its size and possibly its position settings, so to achieve this a desktop app should remember the size and position values when it gets minimized or maximized. Otherwise the "normal" size and position values will be overwritten with the minimized/maximized values.
Some of the information contained in this post requires additional references. Please edit to add citations to reliable sources that support the assertions made here. Unsourced material may be disputed or deleted.
I don't think there is any one correct answer to this because it depends 100% on what the application does.
For example, an app that is it's own "environment" with lots of little inner windows and has a "workspace" paradigm to it should remember what it was set to last time by default and probably allow the user to have different configurations saved.
Other applications, like Instant Messaging clients, are likely to be much more focused and hence simply don't need all that screen space. In those cases, it would make sense for the application to remember where it was on the screen, but definitely not take up the whole thing.
So, in the end, it ultimately depends on what the application is meant to do. A full-screen application is much more immersive than a non-full-screen application, but I tend to follow "the user knows best" approach when it comes to these sorts of things. Letting the user control things like this (perhaps by having a "remember my settings" configuration option in the preferences) allows users with "non-standard" setups use your application in the way that works best for them. Personally, I have 4 wide-screen monitors all running vertically and use a number of different window control applications to bend other apps to my will and put them where I want them. If something doesn't behave well or do what I want, I will quickly find something else and will never think about the problematic application again.
You mention that the app is going to be "multi-platform," so here's the relevant guidance from Apple's Human Interface Guidelines on sizing an app when it opens:
Your application determines the initial size and position of a window, which is called the standard state. If the user changes a window’s size or location by at least 7 points, the new size and location is the called the user state. The user can toggle between the standard state and the user state by clicking the zoom button in the title bar. Follow the guidelines in this section so that users can have the zoom experience they expect.
Choose a standard state that is best suited for the tasks your app enables. A document window, for example, should show as much as possible of the document’s content. Don’t assume that the standard state should be as large as the current display permits; instead, determine a size that makes it convenient for users to use your app. If appropriate, you can allow users to take some app windows full screen if they want more space.
The important bit in there is "determine a size that makes it convenient for users to use your app." That probably holds true for an app on any platform.
Ideally it should remember either the last settings or the most often used settings (it depends on the case that would be most convenient for the user if remembered in the context of the app)