Understanding the Incompleteness Theorem is not difficult.
A consistent rules-axiomatic based system simply means no matter how you apply the rules you always get the same answer.
Given a problem to solve no matter how you apply algebra you will get the same answer.
The concern was whether or not buried in the foundations of mathematics there lurked an ambiguity that could bring it all down.
Today algorithm and software are synonymous, mathematicians were were worried about potential hidden bugs in the software so to speak that might pop up.
At a conference Hilbert posed a question, does an algorithm exist that can prove all true mathematical propositions. An algorithm being a series of steps analogous to a piece of software.
The Turing Machine in part was a response to the question. It was Turing’s concept of a general purpose symbolic processor. Your computer processor is a Turing Machine minus the infinite memory in Turing’s concept.
Related to the question of being able to prove all mathematical things that are true, what Godel said that in any rule based consistent system there are unprovable truths.
Truth in this context does not mean truth as In a sense of physical sense of existence.
An example is Euclidean Geometry. In plane geometry a point is infinitely small and massless ,a line is comprised of an infinite number of points, a line has no width and the shortest distance between two points is a straight line.
Geometry is consistent and there are truths within the system that can not be proven in the system.
http://gonitsora.com/hilberts-axioms-of-geometry/
What the theorem says as a generality is that any logically consistent rule based algorithmic system will have assumption/truhs not expressible in the system.
It has real world implications.
Write a simple C program.
Int a, b, c;
main(){
a = 1;
b = 2;
c = a + b;
}
Within C there is no way to code a second program that algorithmically proves the first program works properly. You then have to prove the second program and intuitively see it results in infinite regression.
Likewise you have a set of axioms in a system and you add axioms to prove the initial rules...and so on. You end up with a self referential system, IOW bootstrapping.
Using axiom A I can prove axiom B which can be used to prove the be used to prove axiom A.