Many important papers use simplicial sets, for instance: Quillen [1] and Kan[2].
Simplicial Set as Presheaf
A simplicial set is a presheaf, that is, a functor from Δ^{op} to Set. This functor is a homset, we can think of it as picking out all the Δ^{op} shaped elements of the set. So it picks out the simplicies and gives them a local order. 
X: Δ^{op} > Set where:

So how are connections between different faces recorded?
One way is as generator+relations, for example, if we have two triangles 'a' and 'b' and we want to join the diagonal (that is, join the (0,2) faces) we could do this with this relation:
d(a,1) = d(b,1)
where:
d is a face map (explained below) which gives a sub face when we remove vertex 1.
In category theory terms we can describe this in terms of morphisms between the functors described above. That is a natural transformation.
A simplicial set is a functor from delta^{op} to set. Where delta is a (weakly) ordered set as described on the page here. 
When denoting faces in a complex, order is important for finding things like boundaries.
Simplicial sets are an extension to simplicial complexes (see page here).
To get to simplicial sets from simplicial complexes it is necessary to order (or partially order) the vertices.
In addition to the face maps in simplicial complexes we add degeneracy maps in the opposite direction these maps are order preserving.
Simplicial sets have an additional property that they are closed under products and this is important in Cubical TT for example.
Degeneracy
In homology (as described on the page here) the emphasis is on the relationship between adjacent dimensions. For instance, if we take the boundary, we map from a given dimension to the dimension immediately below it (face maps). This situation can be modeled by simplicial complexes already described on the page here.
In homotopy (as described on the page here) we may have an ndimensional path in a dimension several levels higher. This situation may be better modeled by simplicial sets as described here.
For a 2dimensional face in 2dimensional space all the vertices have different indices.  
For a 0dimensional point in 2dimensional space we can use the same index multiple times. This is an example of a degenerate face. 
Why Ordered Structure?
In category theory the objects of set are a collection of nelements. Anything else such as labels for elements are additional structure. In category theory we don't tend to look inside objects. So this gives a natural number (ordered) structure. 
Why Face Maps and Degeneracy Maps?
Face Map
 Allows us to construct the subfaces of each face.
 These subfaces may then be glued to subfaces of other faces.
Degeneracy Map
 Allows us to define maps between spaces which are homotopy equivalent and to use the homotopy extension property (HEP) as described on the page here.
 Allows us to simplify products of spaces and work in a single number of dimensions.
What really determines how categories such as set, set^{op} and Δ work are their morphisms. Functions on set can be decomposed into surjective functions and injective functions.  surjective function 
injective function 

The face and degeneracy maps are not functions, we are not in the category of set. A total function in set must give an element in the codomain for every element in the domain, face and degeneracy maps don't do that. They are valid arrows in category theory, but in Δ not set. These are more similar to the arrows in set^{op} although, in addition, they must be order preserving:

face map 
degenerate map 
Why might this be related to Proofs?
In set, given a total function, every element in the domain determines an element in the codomain.
In set^{op} it is the other way round, every element in the codomain determines an element in the domain.
In reverse proofs, that is we start with what we want to prove and work back to the reasons why it is true, we need something more like the second case.
Of course forgetting and duplication information is not enough, on its own, for a proof. We also need, say, deconstructors from type theory.
In cubical type theory degeneracy maps corresponds to weakening in Logic.
Example Graph
This is a simplicial set with only verticies and edges.
Each edge has two maps into node, s (source) and t (target). The map in the other direction is the degeneracy map. That is each node maps to a self loop. 
So both the nodes and edges can be represented as 2 dimensional faces.  
More about graphs and sheaf structure on page here. 
Example Triangle
Things get more complicated when we move up from lines to surfaces. There are 3 ways to get from a triangle to an edge (by deleting each node) and 2 ways to get from a edge to a triangle (degenerate map from each end of the edge). 
A face, such as a triangle, contains its boundary, such as the edges and nodes. If we take all the permutations of 3 numbers in (non strict) order we have 1 for each node, 1 for the whole triangle but 2 for each edge. 

In addition to the mapping into the line (described on page here.) we now have mapping into a triangle. That is triangle is representable object. 
Example of Homotopy Extension Property (HEP)
Imagine we have a space represented like this:  
Is it homotopy equivalent to this space? What are the numbers of the nodes? 

Start with the numbers above but split '3' using the homotopy extension property (see the page here). This works provided that '3' is contractible (there is a retraction to the terminal object). This means that there must be an arrow in each direction between these degenerate 3's. So it doesn't matter which of them the other arrows go in or out of, allowing us to draw it like this: 
Putting it all Together
Here is an example consisting of two triangles. A simplicial set involves many mathematical structures such as sheaves. Attempting to show everything in one diagram gets very messy but I'll try. 
If we treat vertices, lines, triangles ... as separate objects, with only face maps between them, then we have a similar situation to the delta complex structure (see page here). But this is not a single sheaf. It would be nice if we could combine the objects to have a single sheaf and combine all the hom sets. 
So can we use degenerate versions of higher dimensional faces to represent lower dimensional faces? For example, if we are collapsing vertex 2 down to vertex 1 we might use: d_{2} s_{1} 

But there doesn't seem to be a way to reverse this, that is, to take a degenerate object and split it out to two nondegenerate vertices. Can we use equations externally to add and remove this degeneracy? 
Algebra of Simplicial Sets
We can represent simplicial sets as generators+relations.
Here we glue two faces of simplicies to form a simplicial set. So here we have glued (a0) to (b1) and (a1) to (b0) to form a loop. So if we apply M twice we get back to where we started. We can express this as a group presentation like this: [M  M*M=1] 

In the next example there are 3 gluings (a0) to (b1) (b0) to (c1) (c0) to (a1) to form a loop. So if we apply R 3 times we get back to where we started. We can express this as a group presentation like this: [R  R*R*R=1] 

We can take the product of these two examples: 
Gluing in 2 dimensions
So here we have glued (A1,A2) to (B2,B1). So, order is not preserved over the whole simplicial set, just over an individual simplex. The whole simplical set is not a total order as there are faces (for example A0 and B0) which cant be compared. We can glue any dimension face (point, line, triangle... ) as long as the two faces being glued have the same dimension. 

We can then go on to glue more faces, for instance, in addition to gluing (A1,A2) to (B2,B1) as above we could additionally glue (A0,A1) to (B1,B2). Note that, in this case, this only leaves one remaining face. This is known as a horn clause, this means that the remaining face is also equal. I t also means that the two simplicies are also equal or opposite. 

Or we can glue more simplicies. For instance we can glue (A0,A1) to (C1,C0) 
By doing this gluing we define an equivalence relation over the top of the original ordered set. To do this we can either construct the quotient space, that is S\~ where S is the original ordered set and ~ is the equivalence relation. This effectively makes them the same point (which may not work with the ordering) or we use a setoid to represent ~ over S. 
see
Subset Structure
Above we have the set of all functions into the complex which is a homset. We can treat this homset as a set (see Yoneda) that is ignore the structure below it so that it is a set category including functions (the structure above it). A structure we can take from the homset is the subset structure. 
Face Maps and Degeneracy Maps
A face map removes the n^{th} vertex. In this case d_{1} removes vertex 1. 

Any higher sub faces containing the removed vertex are also removed. 
In order to handle the degenerate faces better we add degenerate maps going in the reverse direction to the face maps.
A degeneracy map duplicates the n^{th} vertex. In this case s_{1} duplicates vertex 1. 

Any higher sub faces are also duplicated. 
Structure like identity functor (reflexitivity) is duplicated and there are id functors between the degenerates. So if we have reflexitivity and transitivity then structure (such as lines) into one of the degenerates also goes into the other. But can we always assume reflexitivity and transitivity? 
If the 'verticies' have internal structure is that duplicated? If we have permutations, is this a groupoid? 
Grading of Number of Dimensions
The maps going in both directions increment and decrement the number of dimensions: Face Maps d_{i} : Degeneracy Maps s_{j} : Takes an nsimplex and gives its jth degenerate (n+1) simplex inside it. 
Face Maps
d_{i} : X_{n} > X_{n1}  0≤i≤n
Degeneracy Maps
s_{j} : X_{n} > X_{n+1}  0≤j≤n
Simplicial Identities
The following is based on a category of ordered sets, Order preserving arrows can be decomposed into a sequence of arrows that insert or merge single elements one at a time. More about ordered sets on page here.
Note: when combining maps below the map on the right is done first. For example, d_{i} d_{j} means do d_{j} then do d_{i}.
Identity  An example of one case in a triangle {0,1,2} 

d_{i} d_{j} = d_{j1} d_{i} if i < j  
d_{i} s_{j} = s _{j1} d_{i} if i < j  
d_{j} s_{j} = id = d_{j+1} s_{j}  
d_{i} s_{j} = s_{j} d_{i1} if i > j+1  
s_{i} s_{j} = s _{j+1} s _{i} if i ≤ j 
Skeleton
Here are all the possible cases of the identities for the example of a triangle {0,1,2}.
example {0,1,2} 

left hand side  right hand side  
1st stage  result  1st stage  result  
d_{i} d_{j} = d_{j1} d_{i} if i < j  since i < j these are the only combinations allowed  d_{j}  d_{i} d_{j}  d_{i}  d_{j1} d_{i} 
i=0,j=1  {0,2}  d0d1={2}  {1,2}  d0d0={2}  
i=0,j=2  {0,1}  d0d2={1}  {1,2}  d1d0={1}  
i=1,j=2  {0,1}  d1d2={0}  {0,2}  d1d1={0}  
1st stage  result  1st stage  result  
d_{i} s_{j} = s _{j1} d_{i} if i < j  since i < j these are the only combinations allowed  s_{j}  d_{i} s_{j}  d_{i}  s _{j1} d_{i} 
i=0,j=1  {0,1,1,2}  d0s1={1,1,2}  {1,2}  s0d0={1,1,2}  
i=0,j=2  {0,1,2,2}  d0s2={1,2,2}  {1,2}  s1d0={1,2,2}  
i=1,j=2  {0,1,2,2}  d1s2={0,2,2}  {0,2}  s1d1={0,2,2}  
1st stage  result  1st stage  result  
d_{j} s_{j} = id = d_{j+1} s_{j}  s_{j}  d_{j} s_{j}  s_{j}  d_{j+1} s_{j}  
i=0  {0,0,1,2}  {0,1,2}  {0,0,1,2}  {0,1,2}  
i=1  {0,1,1,2}  {0,1,2}  {0,1,1,2}  {0,1,2}  
i=2  {0,1,2,2}  {0,1,2}  {0,1,2,2}  {0,1,2}  
1st stage  result  1st stage  result  
d_{i} s_{j} = s_{j} d_{i1} if i > j+1  since i > j+1 these are the only combinations allowed  s_{j}  d_{i} s_{j}  d_{i1}  s_{j} d_{i1} 
i=2,j=0  {0,0,1,2}  {0,0,2}  {0,2}  {0,0,2}  
1st stage  result  1st stage  result  
s_{i} s_{j} = s _{j+1} s _{i} if i ≤ j  since i ≤ j these are the only combinations allowed  s_{j}  s_{i} s_{j}  s _{i}  s _{j+1} s _{i} 
i=0,j=0  {0,0,1,2}  {0,0,0,1,2}  {0,0,1,2}  {0,0,0,1,2}  
i=0,j=1  {0,1,1,2}  {0,0,1,1,2}  {0,0,1,2}  {0,0,1,1,2}  
i=0,j=2  {0,1,2,2}  {0,0,1,2,2}  {0,0,1,2}  {0,0,1,2,2}  
i=1,j=1  {0,1,1,2}  {0,1,1,1,2}  {0,1,1,2}  {0,1,1,1,2}  
i=1,j=2  {0,1,2,2}  {0,1,1,2,2}  {0,1,1,2}  {0,1,1,2,2}  
i=2,j=2  {0,1,2,2}  {0,1,2,2,2}  {0,1,2,2}  {0,1,2,2,2} 
Functor to Set
So how do face maps get transported from Δ^{op} to set? Vertex 1 needs to be removed from all faces. 
and how do degeneracy maps get transported from C^{op} to set? 
Simplicial Set from Delta Set
On the delta set page each type of simplex was indexed, for example:


This representation holds all these indexes so that we don't have to keep creating them and they can be used consistently.  
Face MapsSo the tetrahedron indexes its 4 triangles, each triangle indexes its 3 edges and each edge indexes its 2 vertices. Each face table therefore indexes into the next. To show this I have drawn some of the arrows (I could not draw all the arrows as that would have made the diagram too messy). 
The delta category Δ has:
The vertices of the simplicies are (partially) ordered by labeling them with natural numbers. Notation: [M] stands for a simplex with vertices 0 to M. For example: A morphism [M]>[N] is only defined if M≤N 

Δ^{op} has the same objects as Δ but the morphisms are reversed. The morphisms are now the same as the face maps above. 
We can then make this into a sheaf Δ^{op}>set (as described on page here). This separates out the structure inherent in the maps between simplicies of different dimensions and the structure which comes from gluing them together. Perhaps we can think of the simplex structure as the local structure and the gluing provides the global structure.
Simplicial Set
X: Δ^{op} > Set is a simplicial set
where:
 Δ is a finite totally ordered set {0,1,2...,n}
See page about chain complexes.
Notation
Δ  The delta category whose objects are the simplicies. 
Δ^{op}  The delta category with morphisms reversed. 
Δ^{n}  an nsimplex which may be degenerate 
Δ^{n}  Ordered nsimplex = [0, ... ,n] 
X  A simplicial complex. 
X_{n}  The set of all n simplicies of X 
d_{i}(x)  an order preserving function which removes the i^{th} element from a simplex 
s_{i}(x)  an order preserving function which duplicates the i^{th} element in a simplex 
D_{i}(x)  Like d_{i}(x) but in Δ^{op} so it increases the dimension rather than decrementing it 
S_{i}(x)  Like s_{i}(x) but in Δ^{op} so it decrements the dimension rather than increasing it 
Combinatorics
The degeneracy loosens the coupling between dimension and number of elements.
The following table shows the possibilities in a combinatorial way.
Each entry must be ordered, the element values can stay the same (degeneracy) but they must not decrease.
Degenerate entries (where an element occurs more than once) are shown in red.
n  Δ^{0}  Δ^{1}  Δ^{2}  ...  

0  {0}  {0} {1} 
{0} {1} {2} 

1  {0,0} 



2  {0,0,0}  {0,0,0} {0,0,1} {0,1,1} {1,1,1} 
{0,0,0} {0,0,1} {0,0,2} {0,1,1} {0,1,2} {0,2,2} {1,1,1} {1,1,2} {1,2,2} {2,2,2} 

3  {0,0,0,0}  {0,0,0,0} {0,0,0,1} {0,0,1,1} {0,1,1,1} {0,1,1,1} 
{0,0,0,0} {0,0,0,1} {0,0,0,2} {0,0,1,1} {0,0,1,2} {0,0,2,2} {0,1,1,1} {0,1,1,2} {0,1,2,2} {0,2,2,2} {1,1,1,1} {1,1,1,2} {1,1,2,2} {1,2,2,2} {2,2,2,2} 

... 
Products
One of the advantages of simplicial sets, over simplicial complexes, is that they simplify products (products of simplicial complexes on page here).
cartesian product of simplicial sets
For K,LSimplicialSets, their Cartesian product, K×LSimplicialSets is the simplicial set whose k^{th} component set is the Cartesian product of Sets of the components of the two factors:
(K×L)_{k}=K_{k}×L_{k}
and whose face and degeneracy maps are, similarly, the image under the Cartesian productfunctor of the face and degeneracy maps of the factors Since SimplicialSets is a category of presheaves, namely over the simplex category, this is a special case of the general fact that limits(such as products, pullbacks and inverse limits) of presheaves are computed objectwise. https://ncatlab.org/nlab/show/limits+of+presheaves+are+computed+objectwise
So an element in product might be (a,b) and another element might be (c,d) then the product is:
(a,b) * (c,d) = (a*c,b*d)
For functions if we are mapping (a,b) to (f(a),g(b)) then the function between them is (f,g) which is two functions in parallel. So this can be drawn like this
(a,b)  (f,g). > (f(a),g(b))
This can be decomposed like this
(a,b)  (f,id). > (f(a),b)  (id,g). > (f(a),g(b))
or like this
(a,b)  (id,g) > (a,g(b))  (f,id). > (f(a),g(b))
These 3 paths give 2 triangles which is what we would expect from geometric intuition of the product of two lines.
The rules are:
 (X × Y)_{n} = X_{n} × Y_{n} = {(x,y) xX_{n}, yY_{n}}
 if (x,y)(X × Y)_{n} then d_{i}(x,y) = (d_{i} x, d_{i} y)
 if (x,y)(X × Y)_{n} then s_{i}(x,y) = (s_{i} x, s_{i} y)
To take the product of two simplicial sets multiply all the terms which have the same dimension. Duplicates can be removed, also degenerate versions of existing terms can be removed, for example:
{[0,0],[1,1]} = {[s_{0}(0),s_{0}(1)]} = s_{0}{[0],[1]}
so that can cancel out with {[0],[1]}
Example1  product of two lines Δ^{1}×Δ^{1}Multiplying out all the terms at each dimension and canceling out duplicates as above gives:

Skeleton The product is given by all possible paths (chains) where one of the multiplicands is changed at a time (we can think of the other as being the identity (Id) function). On the diagram we can think of this as using the vertical and horizontal lines.


Nerve Shuffling Operation Shuffles are partitions of the set {0,1,...,m+n} into two disjoint subsets.

where:

This works out automatically if we work in terms of edges by coding vertices as degenerate edges as follows:
line1 ={v_{0}>v_{1},v_{0}>v_{0},v_{1}>v_{1}}
and we want to multiply this by another line:
line2 ={w_{0}>w_{1},w_{0}>w_{0},w_{1}>w_{1}}
so by multiplying out all the terms we get line 1 * line 2 =
(v_{0}>v_{1})*(w_{0}>w_{1}) = (v_{0},w_{0})>(v_{1},w_{1}) = A>D
(v_{0}>v_{1})*(w_{0}>w_{0}) = (v_{0},w_{0})>(v_{1},w_{0}) = A>B
(v_{0}>v_{1})*(w_{1}>w_{1}) = (v_{0},w_{1})>(v_{1},w_{1}) = C>D
(v_{0}>v_{0})*(w_{0}>w_{1}) = (v_{0},w_{0})>(v_{0},w_{1}) = A>C
(v_{0}>v_{0})*(w_{0}>w_{0}) = (v_{0},w_{0})>(v_{0},w_{0}) = A>A
(v_{0}>v_{0})*(w_{1}>w_{1}) = (v_{0},w_{1})>(v_{0},w_{1}) = C>C
(v_{1}>v_{1})*(w_{0}>w_{1}) = (v_{1},w_{0})>(v_{1},w_{1}) = B>D
(v_{1}>v_{1})*(w_{0}>w_{0}) = (v_{1},w_{0})>(v_{1},w_{0}) = B>B
(v_{1}>v_{1})*(w_{1}>w_{1}) = (v_{1},w_{1})>(v_{1},w_{1}) = D>D
This gives 9 edges of which 4 are degenerate (vertices). The nondegenerate edges form the boundary of two triangles. 
Example2  product of triangle and line


Nerve Shuffling Operation Shuffles are partitions of the set {0,1,...,m+n} into two disjoint subsets.

where:

This works out automatically if we work in terms of edges by coding vertices as degenerate edges as above.
Cubical Set
A cubical version of simplicial sets is described on the page here.
Model Category
A model category is a context in which we can do homotopy theory or some generalization thereof; two model categories are ‘the same’ for this purpose if they are Quillen equivalent. (nlab) 
A model category (sometimes called a Quillen model category) is a context for doing homotopy theory.
It is a category equipped with three classes of morphisms, each closed under composition:
related structure in set  

weak equivalences  bijection  
fibrations  nice surjections (Serre fibrations)  
cofibrations  nice inclusions  neighborhood retract 
Quillen Equivalence
We need a mapping that preserves the structure of a topological space: the cycles, the boundaries, the holes and so on. However it does not need to conserve the exact points, faces of the complexes that hold them. The two shapes on the right are the same from a topology point of view they are a disk with a boundary round it. 

In order to do this we map the connections between the dimensions in the chain (boundaries), not the dimensions (points, faces, etc.) themselves. 
Simplicial Set in Category Theory
Objects  Morphisms  

Δ  ordered sets example: {0,1,2} 
Order preserving maps may be inclusions (add points), example: {0,1,2} > {0,1,2,3,4} 
Δ^{op}  ordered sets  Order preserving maps example: {0,1,2,3,4} > {0,1,2} may remove points (choose a face). 
Chain Homotopy
Weak Equivalences
Usually equivalences are defined in terms of two functors in opposite directions however a weaker notion of equivalence is defined in terms of a functor going in one direction only.
Fibrations
A Serre fibration arises when we reverse the functor defining the weak equivalence.
Cofibrations
In any model category:
 A fibration that is also a weak equivalence is called a trivial (or acyclic) fibration.
 A cofibration that is also a weak equivalence is called a trivial (or acyclic) cofibration.
Cubical Type Theory
Cubical type theory extends these concepts with the idea of an interval [0,1]. This is discussed further on the page here.
Code
Sage is mathematical software which implements simplicial sets, more about this on page here.
Some Papers that use Simplicial Sets
[1] Daniel Quillen, Rational homotopy theory, Ann. of Math. (2) 90 (1969), 205–295.
[2] A. K. Bousfield and D. M. Kan, Homotopy limits, completions and localizations, Lecture Notes in Mathematics, Vol. 304, SpringerVerlag, Berlin, 1972.