Q:

What does this naming convention for headers refer to?

I was studying Include guards in C++ and came across this naming convention from Wikipedia: 
CREATORSNAME_YYYYMMDD_HHMMSS

I get now that it is a timestamp but then say
#ifndef CREATORSNAME_YYYYMMDD_HHMMSS
#define CREATORSNAME_YYYYMMDD_HHMMSS
#endif
then how does the compiler know that it is HeaderName.h ?

A:

It's just a convenient way to store the documentation about the person who wrote the module and when, that guarantees uniquness of the guard(through the date), and provides additional information for others referencing the module.  Particularly if they believe there to be a problem with it's corresponding implementation, so they have someone to write to.  Otherwise, a creator of a module can forget to add in documentation as to who they are.
#ifndef CHRIS_20140807_011555 
#define CHRIS_20140807_011555

struct foo {
    int member;
};

#endif /* CHRIS_20140807_011555 */

Alternatively, you could do this, but it doesn't provide additional information and adding the documentation at the top is easy to forget.(Though to be honest, it should become habbit, and SHOULD NOT BE FORGOTTEN).  But, this is still likely the motivation for such practices, despite the option below being much more widely used.
/*
* AUTHOR: Chris
* DATE: July 7, 2013
*
* These comments are easy to forget
*/
#ifndef FILENAME_H
#define FILENAME_H

struct foo {
    int member;
};

#endif /* FILENAME_H */

This:
#ifndef AAAA 
#define AAAA

struct foo {
    int member;
};

#endif 

and
#pragma once

struct foo {
    int member;
};

All of these code snippets accomplish the exact same thing.

