el Generar es "compilar" o sea es el compilar de VB6, o sea te genera el .exe (o lo que sea que tenga que compilar o una dll por ejemplo)
el "generar solucion" si no me equivoco es cuando tenes varios proyectos, por ejemplo: estas haciendo una dll y tenes el proyecto de la dll y a su vez tenes un proyecto para testearla, entonces te genera todo junto.
el publicar te genera un instalador con las dependencias para instalar en la pc, pero la verdad nunca lo necesite usar ya que solo distribuyo el .exe y listo