If you only have to care about an empty last field, then using sed would be shorter:
$ sed 's/:$//; s/:/ + /g' file
Hello + world
Hello + worlds
Hello + world + example
Your attempted awk command can be salvaged like this:
$ awk -F":" '{ print $1 " + " $2 ($3 != "" ? " + " $3 : "") }' file
Hello + world
Hello + worlds
Hello + world + example
Or, by using OFS (the output field delimiter):
$ awk -F":" -v OFS=' + ' '{ print $1, $2 ($3 != "" ? OFS $3 : "") }' file
Hello + world
Hello + worlds
Hello + world + example
Additionally getting rid of the negative test:
$ awk -F":" -v OFS=' + ' '{ print $1, $2 ($3 == "" ? "" : OFS $3 ) }' file
Hello + world
Hello + worlds
Hello + world + example
awk script, you have to writeawk 'script'orawk -f scriptfile.