I'm trying to make a fast but highly efficient file opening flat file based system.
Before you do that, have you considered using SQLite? It is a relational database engine that has been described by its author as a replacement for fopen().
Should I use fgets with fopen? But I've read you should use fgets with it to grab stuff in chunks?
Yes, unless you want (and can afford) to read it all with [man]file_get_contents/man.