How to lock ATMEGA328p-au to disable sketch read
How to lock ATMEGA328p-au to disable sketch read from Arduino IDE?


The Arduino IDE does not let you read "sketches" in any case. It is designed to upload code to the chip, not the other way around.




  It is being given to people, who have highly technical staff at the back ...


If your device was given to me I would put the Arduino IDE aside, and use an ICSP programmer (such as the AVRISP) to read the (binary) code back from the chip. If you had disabled SPI programming I would use a high-voltage programmer (such as the AVR Dragon) to do the same thing.

However this would not give me the C++ code that the sketch was written in. It would give me the machine code that the compiler output. The amount of effort required to turn that back into C++ code would be enormous. It would be much faster to simply get someone to re-code whatever-it-is that your device does.



If your code is useful without modification (for example, it mines Bitcoins), then making an exact copy could be useful. People could simply duplicate the machine code, put it onto 1000 chips, and go ahead and do whatever your thing does. However that may not be practical, especially if you have customization (for example, displaying the customer name on a LCD screen). Having said that, making a minor change like changing "Nick Gammon" as a string literal to "Fred Nurk" may be possible without too much effort.



As others have said, you can change the fuses so that the machine code cannot be read back. Once you do that, the only thing you (or anyone else) can do is erase the chip (which therefore removes the code) and then upload new code.

This would protect you from attempts to duplicate your code.



As for the bootloader, personally I would turn off the BOOTRST fuse so that the bootloader is not executed, and therefore any attempts to get it to read out the contents of program memory would fail. Indeed, I would upload the code without any bootloader to be on the safe side. The bootloader is not required to be there once the code has been uploaded, and you can upload code without using a bootloader.




  What are the chances it can go wrong?
  
  What will happen if it goes wrong?


Depending on what fuses you change, you may lock yourself out of the chip. For example: 


If you remove the bootloader, you won't be able to upload sketches from the Arduino IDE, until you replace the bootloader.
If you disable the BOOTRST fuse you won't be able to use the bootloader until you re-enable that fuse (assuming the bootloader is present).
If you disable SPI programming, you won't be able to upload anything (including the bootloader) unless you have a high-voltage programmer. The use of the high-voltage programmer is a little specialized, it requires 12V to be applied to the /RESET pin in order to put the chip into high-voltage programming mode.
If you change the fuses to prevent the bootloader being used, and the chip being read, then you won't be able to program the chip using the Arduino IDE (via the bootloader) until you do a chip erase and re-upload a bootloader.


I have a page about programming AVR chips using high-voltage programming which also discusses the other programming methods.