TLDR: C# has a BinaryReader/BinaryWriter.
Give them File.Open( ) when you make them.
When you save use simple data types in a specific order you choose. String, Int, Int, Float, String, etc.
When you load you read them in that same order, String, Int, Int, etc..
You basically save information for yourself, you just need to be able to reconstruct the scene.
This is simple to do but tougher to explain.
Nik02 is correct, serialization is what you're looking for.
Specifically look into binary serialization.
You basically take a simple object like a string or an int and you turn it into 1's and 0's.
Its hard to serialize complex objects but its not an issue once you understand the process.
So to save your game you basically decide what information you need to reconstruct the game as it is.
An example would be a string:LevelName, float:x, float:y, int:WeaponType, int:AmmoCount, int:Health, int:Lives
You don't want to save the entire level, textures, enemies, particles, that would be a huge file and that data is fleeting. (These things are achievable but lets cut corners for now)
So you save a simple string, level name, which is enough information for you to know what textures and enemies you want to load later.
When loading you can create a new player and just pass in simple parameters like x, y, health, weaponType, etc.
ENough to make a player just like the one we had when we saved.
You can even just save numbers, 102315
When you load the file read each number,
for the number 1, if its a 1 then its the first level
for the second number, if its a 0 then all secret skulls have been found
etc. You are basically leaving hints for you to use later, when you load you just need to know what to do with the info.
To do the actual saving you probably want the binary writer and reader in C#
http://msdn.microsoft.com/en-us/library/system.io.binarywriter%28v=vs.110%29.aspx
They will do the serializing, to put the serialization data into a file you need to give them a file to write into!
Use File.Open to turn a fileName into a stream we can give to the binary writer.
http://msdn.microsoft.com/en-us/library/b9skfh7s%28v=vs.110%29.aspx
You can read that page to see what data types are supported for serialization.
To do the loading is more difficult to explain.
You use the binary reader and file.open just like before.
But you need to know what you are reading, it will be all 1's and 0's which could be anything.
Binary is used intentionally sometimes to prevent unauthorized access to data, 1's and 0's are useless unless you know where an object begins and ends.
For instance 11001010 is a byte, a byte can be an int, it can be a char, it could be a bool, and thats only 1 object, imagine our 7 mlti-byte object example * 4 players.
Complete gibberish, unless you know what the data represents.
So basically we need to know what we're looking for, and to do that we need to save ina specific way.
Write name, x, y, health, etc.
Read string, float, float, int, etc.
You must code this specifically.
If you have a variable number of players you can write an int:PlayerCount as the first thing,
then when you are loading you check the very first object and then loop through your load player code that many times.
Another option is CSV (comma separated values) or XML. These are human readable formats but C# doesnt do CSV by default and XML may be overcomplicating it.
Even though I said alot I am still being brief, it requires more eplanation but this should be enough to help you understand this subject.
It is very hard to understand at first but it is quite simple so good luck on the steep learning curve.
I didn't proof read so hopefully you manage to get something out of the post.