Try to avoid paralleling LEDs. It is only somewhat acceptable when they are all from the same batch, selected for closely matching Vf and thermally coupled. Even so you have to derate their max If considerably.
For your two and three LED cases a series string would be vastly preferable. For your four LED case, two series strings of two LEDs each with its own current limiting resistor, the two strings in parallel would probably be the best option.
The simplest possible BJT current sink is a NPN transistor, base driven by your I/O with an emitter resistor to set the current. With 5V logic levels, that would limit you to no more than two 3V LEDs in series from a 12V supply. Anything that needs less headroom is considerably more complex, so unless your nominal 12V supply voltage varies widely (e.g. automotive applications), it isn't worth doing using discretes. OTOH if you've got a lot of LEDs to drive from a MCU but don't want to mess with multiplexing, it can be worth using a dedicated constant current LED driver IC, which typically will be SPI controlled with a single resistor to set all its LED currents.