Being a curve addict here is a solution using bezier objects for this.
Create three sets of bezier curves:
- Section shapes for varying cylinder tips
- Piped cream objects themselves
- Taper shape(s)
Create varying bezier curve shapes for the foreseeable piping bag tips you'll be using.
These were created from mesh circles with different number of segments and converted to bezier curves after the fact.
Create a taper object. This curve will be used to control the shape/width of the piped cream along its length. Position along the Y axis of the mid vertex will set the width of the puff at its widest point.
Create a bezier curve object for the piped cream itself. Optionally give it a twist with the Tilt function (Ctrl + T in Edit Mode). Adjust its shape length and twist as desired.
Set the Taper Object to the taper curve created above and set the Bevel Object to one of the desired sections.
Turn on the option Map Taper so the bevel isn't clipped but instead "slides" along its length.
Now animate the End Bevel property to simulate the squirting action.
For added dynamism you can create and animate the influence of additional shape-keys in both the taper and main curves, to simulate gravity squashing and the elasticity of the cream.