1. Was Family BASIC powerful enough to create full programs or was it just made as a toy for people interested in programming?
It depends on your defintion of 'powerfull'. The Famicom, aka NES, was a 1.8 MHz 6502 machine, thus it got processing power superiour to a C64 or VIC20. It's graphics system was also more capable than what a C64 or similar machines got.
Family BASIC on the other hand was a special developed, MS alike dialect. Somewhat based on the BASIC, also provided by Hudson Soft, for the Sharp MZ80 (and follow up) series, but a seperate development. As a speciality it got a GAME BASIC mode. Basicly it switched all variable handling to Integer to improve performance considerable. Much like the Integer BASIC Woz did out of the same reasoning for the Apple II.
And like the TI 99/4s Extended BASIC it featured many special functions to utilize the hardware to a dregree unknown in other implementations. Next to all features of the Hardware could be accessed from BASIC. The only real restriction was the limited RAM size. 2 KiB for the original version and 4 KiB for Family BASIC V3. Due the great integration this was less lmiting than it seams.
Maybe take a look at this youtube video to get an idea how able Hudson Softs GAME BASIC was. It shows several games writen in Family BASIC. The first (Mario Jump) is an example taken from the Family BASIC manual.
So I'd say more than (almost) any other 8 Bit BASIC machine (back then).
2. I know Assembly language was used exclusively to create games for the NES/Famicom. Would you have a lot more limitations with BASIC compared to Assembly.
Well, is eating noodles with chopsticks more limitating than using a fork?
As usual it depends. If you're in doubt about the underlaying principles, RetroComputing might not be the right place to ask. The question about a comparsion between BASIC and Assembler, even if it's a specific BASIC, is way to broad to be discussed here. Maybe try to ask this on more general, programming orientated, subsites of StackExchange.