Las diferencias visuales la verdad es que no son muchas. De hecho, creo que todos los navegadores interpretan igual ambas etiquetas y por tanto el efecto que perciben los visitantes de utilizar una u otra etiqueta es el mismo.
Pero que los navegadores interpreten igual una etiqueta que otra no significa que conceptualmente no sean etiquetas distintas.
Te comento que HTML es un lenguaje interpretado por el navegador, que es el responsable de renderizar la página como le parezca, siempre atendiendo a las etiquetas que ha puesto el diseñador. <B> y <STRONG> da la casualidad, o no es tan casualidad, que los navegadores la interpretan igual y por tanto la muestran igual, con una negrita en el texto que engloba. Pero el significado es el siguiente:
<B> indica una negrita. Nada más que eso. El texto que engloba tiene que estar escrito con "bold".
<STRONG> indica que el texto que engloba se tiene que reforzar. El navegador es el que interpreta cómo se debe mostrar un texto reforzado, más fuerte, y todos los navegadores han decidido que para mostrar un texto más fuerte lo que harán es poner una negrita. Pero eso no implica que mañana venga otro navegador que no le guste reforzar el texto con una negrita y lo que haga es aumentar el tamaño y poner en color rojo, por ejemplo.
En definitiva, con la etiqueta <B> estamos marcando una negrita específicamente y con la etiqueta <STRONG> estamos simplemente indicando que se desea reforzar ese texto, pero el navegador es el encargado de decidir cómo lo desea reforzar.
Lo de cuál es más recomendable te lo vas a poder contestar tú mismo según tus intenciones. Ahora ya sabes las diferencias y deberías saber cuál de las dos etiquetas te interesa en cada caso.