Informally, obfuscating a program is the process of concealing what the program is doing while at the same time preserving its functionality. Among other things this serves to protect against code tampering and reverse engineering. I found a very good example [here][1]

Obfuscation has plenty of applications. One important application would be construction of FE and FHE . Other few are constrcution of witness encryption and a NIZK
[CLTV14]


  [1]: https://security.stackexchange.com/questions/50937