For more info on attributes
An attribute is a declarative tag, they are written with square brackets. [System.Serializable] is, for example, what you would place above the class you wish to show in the inspector.
public class keeper
public string notes = "Notes...Copy, Paste, whatever ;)";
This would show as a small foldout within the class in the inspector.
System.Serializable tells Unity this is like a class with a subclass.
for more information on Serializable
Unity contains many unity specific types.
Can be used for post-processing a scene with special effects, watermarks, have every new scene begin with certain objects, etc.
This attribute should be easy to figure out. You can use this to change script variables on different game objects at once or use it to change some other values on a different component.
This allows you to change the inspector for select objects or use.
Unity has many more and I may go into detail about them in a later post.
Here is a nice article covering the entire 65+ attributes.