Pro bono work is an assignment taken on for free, with no expectation of being paid for the work. Except for third party costs (such as printing) the designer provides their design services at no charge to the client. Doing pro bono work for non-profits or charities and for friends is common practice for some designers. It's a valid way of building a portfolio, getting free publicity, and possibly paving the way for future paid assignments. Even if the work is done for free, you should always protect yourself with a freelance design contract. Use the contract to spell out exactly what work is being done for free, what costs will be reimbursed, schedule of delivery, and ownership of the files.
Working on spec is taking on a design project, doing the preliminary work (and perhaps even a finished product) without a freelance design contract, without a deposit, and with nothing more than a hope that the prospect will like the work enough to pay for it. The danger is that the client will either not like the work or balk at the suggested payment leaving the designer with several hours of unpaid work or that the client will like the work but will simply take it without paying for it. There is an entire Web site devoted to teaching both designers and clients about the pitfalls of working on spec, aptly named NO!SPEC