How would you explain this very simple add/modulo asymetric encryption? I am working on a presentation aimed at developers without a strong mathematical background (like me). I would like to explain how asymetric encryption works with an non-fully-secure but working example.
I found one on Stackoverflow based on addition and modulo : 


given a range from 1 to M
given a and b where a+b = M
a is the public key, b is the private key
x is the clear data (just a number)
y is the encrypted data
y = (x + a) mod M
x = (y + b) mod M


Example :  

M=10, a=3, b=7, x=4  
y = (4+3) mod 10 = 7  
(7 + 7) mod 10 = 4  


Vilain knows the algorithm and a, y, M.
We suppose Vilain cannot guess b from a.
Reverse modulo has multiple results :   

4 mod 3 = 1  
7 mod 3 = 1  
13 mod 3 = 1  


Meaning Vilain cannot easyly find 

x+a 


from 

(x+a) mod M


Even this is really simple, and I "feel" the modulo "wrap-around" I could not find anyway to explain WHY this works : 

y = (x + a) mod M
x = (y + b) mod M


Does anyone could try to explain it to me ?
If you were to plot the numbers 0-M on a straight horizontal line in increasing order from left to right, your message would become a point on that line. When you apply the key, it moves the message over $a$ spaces to the right. The modulo operator means that if your message goes too far off the right side of the line, then it wraps back around to the left side of the line.

If you were to apply the key $a$ again, your ciphertext message would move over another $a$ spaces to the right, which, assuming an appropriate modulus, implies that the result will not line up with the original plaintext message.

With this in mind, if you were move the ciphertext message instead $b$ spaces forward, you would end up back at the original message. 

If you wanted to use $a$ as a symmetric key, you would instead perform modular subtraction on the ciphertext using $a$. Basically, symmetric decryption "reverses" the transformation, while in the case of asymmetric encryption, the  ciphertext is decrypted by going forward, as opposed to going backwards. This is what enables us to build public key encryption from non-invertible functions - we do not invert the transformation, we design it such that "going forward" (in a particular way) happens to "line up" and result in the original message.

Other operations can be used to create this asymmetric effect, usually employing a modulus. As mentioned by @poncho in the comments, multiplication is often used as a way to demonstrate "asymmetric crypto", but it should be noted neither addition nor multiplication is "strong enough", typically: modular exponentiation is what is used in practice to achieve the effect. 

Here are some simple diagrams using your example. We'll start with a number line: 

-----0-----1-----2-----3-----4-----5-----6-----7-----8-----9-----10-----


Setting $a$ at 3:

-----0-----1-----2-----a-----4-----5-----6-----7-----8-----9-----10-----


After we add $x$ (which is 4) to $a$ (which is 3); Since $a$ has been encrypted, we shall refer to the ciphertext as $b$ (as you did), which now has the value of $7$; The addition moves the value to the right on the number line:

                                   +x
                       +-----------------------+ 
                       |                       v
-----0-----1-----2-----a-----4-----5-----6-----b-----8-----9-----10-----


If we were to add $x$ to our ciphertext again, we would end up at $1$ ($11 \bmod 10 = 1$)

                                                           +x
... -------+                                   +------------------ ...
           v                                   |
-----0-----1-----2-----3-----4-----5-----6-----b-----8-----9-----10-----


This obviously leads to incorrect decryption. To decrypt correctly, we can add the corresponding private key $y=6$ ($x + y = 10$) to make the ciphertext "go forward" to the correct plaintext, remembering to wrap around when we get to the end of the number line:

                                                         +y
... -------------------+                       +------------------ ...
                       v                       |
-----0-----1-----2-----3-----4-----5-----6-----b-----8-----9-----10-----


Remark: here $10$ and $0$ are the same number (because $\mod 10$) !