A junction object is one that contains two relationship fields, relating two objects (or possibly the same object twice) in a many-to-many relationship. In the Schema Builder, a typical junction object will look like this:
Here, Opportunity Product relates Product records to Opportunity records. One Opportunity can have many Products, and one Product may be associated to many Opportunities. In the example documentation, the Job Application links one Applicant to many Positions, and one Position to many Candidates. This is the very definition of a junction object.
In the salesforce.com UI, we only really see two types of objects: "Standard" and "Custom." There is no place in the system where you can explicitly create a third type of object called a "Junction" object. However, these objects may have one or more attributes that may not explicitly be called out by the UI: setup, non-setup, master, detail, sub-detail, parent, child, grandparent, grandchild, junction, and so on.
One single object in Salesforce is rarely of a single type, but will have several properties depending on how it is defined. For example, Opportunity is a child of Account, but a master of Opportunity Product; it is also a standard object.
When you create an object with two lookup fields, and its primary purpose is to relate two other objects together in a many-to-many relationship, you have created a junction object. The UI will not change; it will not suddenly declare that this custom object is now a junction object. It does not matter the junction object is standard or custom. As long as its purpose is to link two other objects together in a many-to-many relationship, it is a junction object.