When serializing data you have a few options. The main ones are binary vs textual, and ordered vs key-value pairs. I can speak to some of the tradeoffs, though I don't promise an exhaustive list.
Text files are slower to parse, but easy to read and edit. They're easy to use cross-platform too, since text is almost universally compatible (line endings aside).
Binary files may be faster because you can just directly load them, but there are gotchas like sizeof(int) or other types differing between platforms, or big-endian vs little-endian byte ordering. If you want cross-platform files, some extra code is required.
Binary files may seem at first to be smaller and more consise, but it should be noted that text compresses very well. Binary is not always more consise, either. A cool property of textual notation is that smaller numbers take less space than big numbers. In ascii, 1 can be represented with 1 byte, while 100 takes 3. Binary tends to be fixed width, so textual can occasionally win surprise victories if the data is right.
Of course, if you need random access, you probably want a binary file. As mentioned, text data is variable width so you can't seek to a field without reading all previous fields (or alternatively, reading an index, but maintaining an index would be annoying for a text file).
On the other dichotomy, ordered fields have the advantage that you don't need to save the field keys to the file, thus saving space. Unfortunately, this also makes it difficult to edit the file as nothing is labelled in it. Extending the format is also a little unwieldy. The easiest way to do it is to just increment the format version number and tack more fields on the end. Otherwise your code starts filling up with if (version > x) every few lines, though whether you prefer a lack of logical ordering in the file or a pile of ifs is up to you.
Key value pairs are certainly simpler. When editing, everything is labeled and you can just treat every field individually. If you end up not finding a field, you either use a default or throw an error.
Typically, text files are key-value pairs, and binary files are ordered, but ordered text files or key-value binary files are certainly possible.
background is just a .jpg i found searching on google, nothing special.
You have an appropriate tag. Also, it's impressive what a difference a nice background makes.