Hard PWM is a hardware block that sets its duty cycle based on a user-configurable register value. Usually it can be configured to a PWM frequency of several hundred kilohertz with 12 or 16 bit resolution.
Soft PWM is software bit-banging (you set up your own timer and change the output state every time it expires). Usually the resolution and time base are much less than hardware PWM.
Hard PWM is not implemented within the Bela core even though the BeagleBone Black has hard PWM capability (unless something has been updated recently that I didn't know about).
With Bela your "clock" is 44.1 kHz, so the PWM frequency will be fairly low if you want good resolution. For example, if you want 8-bit resolution you would need to allow 256 samples per PWM period, for a PWM frequency of roughly 172 Hz.
You can use all 16 digital outs for soft PWM because Bela writes them synchronously with the audio sample clock. You just write to those just like you would to an audio interface. On every audio frame you either write a 1 or a 0.
In Pd you are basically just generating an audio-frequency pulse and putting it out to the desired pin.
If you are using this for slowly changing things like a CV signal then this should work fairly well. If you want to use these as something like additional DAC outputs for audio-frequency signals then you would have to dig deeper into Bela core to come up with a way to enable hardware PWM and find a way to interface that with Pd.