Cita: Vi en cms de terceros y vi en la BD se guarda exactamente igual es como si no tuviese ningun tipo de filtro
Exacto.
El problema de una inyección no es en sí el código sino como lo "preparas" antes de insertarlo en la base de datos, si ni lo escapas adecuadamente puede producirse un error de sintaxis de SQL y eso es la puerta a una inyección.
Si usas PDO el método prepare() hace todo lo posible para mantener segura tu consulta.
Cita: Mi duda es como aceptar todos los caracteres sin que hagan cosas malas de por medio
La solución consiste efectivamente en preparar las consultas, escapar el texto que se introduce pero no transformarlo ni "codificarlo" de ningún modo.
No debes alterar la naturaleza original de la información sólo por no saber escapar tus consultas.