Bps running and bps upfront are used so that notional amount doesn't need to be referenced, and "bps upfront" is just "bps running" multiplied by DV01 (not modified duration).
For example, a 10-year bond currently has a DV01 of roughly 9. Then "1 bp running" for this bond is equivalent to "9 bp upfront". If the notional amount is \$100 million, then the total dollar risk is $9 \text{ bps} \times \text{100 million} = \$90,000$.
Carry and roll for bonds/swaps are usually quoted in "bps running" terms over a specified horizon. If a bond's RD&C (rolldown + carry) is $x$ bps running over 3 months, it means that your expected P&L from carry and roll will be $x \text{ bp} \times \text{PV01}$ over three months. Continuing with our 10-year bond example, its RD&C is currently about 4.4 bps running, or 39.6 bps upfront, or \$396,000 for 100 million notional. Note that we don't usually annualize carry and roll statistics when we report them, so these are expected P&L over the specified horizon (3 months in this case).
Also note that bps running is bond specific, "1 bp running" would equate to "$x$ bp upfront" depending on a bond's risk. So the simple yield spread between two bonds is neither bps running nor bps upfront. Typically we'd calculate the carry/roll for each bond and then take the difference. The result would be considered a "bps running" concept and you'd implement a spread trade in a DV01-neutral way (i.e., you'd scale the notionals on the two bonds so that their DV01s are identical).
Let's use a real life example: 10-year bond yield closed at 2.17% today while 30-year bond yield closed at 2.75%, a yield spread of 58 bp. If we implement a duration-neutral spread trade (say short 2.27 units of 10-year bond against each unit of 30-year bond), the 3-month carry of the trade would be $1.9-2.7 = -0.8$ bp running and the 3-month rolldown is $0.1 - 1.7 = -1.6$ bp running.