Nie jestem team leaderem ale pracuję w tej metodyce, więc powiem może jak to mniej więcej wygląda...
Jeśli chodzi o niefunkcjonalne, to są one zazwyczaj rozpisywane jako jeden z tasków w ramach usecase'a, ale często mając na uwadze istniejące inne user stories, by potem przykładowo, w połowie projektu nie przebudowywać modelu danych od nowa. Znamy bowiem z reguły mniej więcej na ich podstawie ogólny zarys modelu i powiązań między jego elementami, czy encjami z nich wynikających.
Najlepiej gdyby frontend o choć jeden sprint wyprzedzał kodowanie backendu. Programiści bowiem dostają gotowy szablon, pod który tylko kod piszą i ewentualnie zgłaszają uwagi do front-end developera. Zazwyczaj jest to jednak luksus i oba elementy idą równolegle. Przynajmniej na samym początku projektu.
Sam projekt, jego analiza, MUSZĄ poprzedzać etap kodowania. Czemu? Bo inaczej nie oszacujesz poprawnie czasochłonności projektu. Nie powiesz ile co potrwa. A i tak najczęściej kończy się to na zasadzie: "Oszacowany czas należy pomnożyć razy dwa (lub trzy - zależy od technologii i zasobów) by wyszedł najprawdopodobniejszy faktyczny czas zakończenia projektu". Wynika to właśnie z faktu wzięcia pod uwagę takich rzeczy jak ewentualne choroby pracowników, poprawki w backlogu czy change requesty ze strony klienta.
Poprawne IMHO postępowanie to wspólna analiza z klientem i podział na user stories, z wyszczególnieniem co i jak oraz priorytetami dla każdego z nich. To pierwsze szacowanie. Potem następują jakieś wstępne założenia, wybór teamu. To etap drugi, gdyż wiadomo mniej więcej wtedy kto ma jakie umiejętności i można realniej oszacować możliwości zakończenie. Front-ent można już dla najbardziej priorytetowych rzeczy budować oraz bardzo wstępny, ogólny, model danych. To ułatwi potem pracę, gdyż mając ogólny widok całości, prościej zauważyć powiązania i ewentualnie zmienić priorytety user stories. By nie zaszła sytuacja, gdy w połowie projektu nagle robi się rzecz od której zależą te, pierwotnie wybrane jako ważniejsze.
Co do praktyki z zadaniami. Szacowanie nie leży tyle w gestii product ownera co wspólnego jego wysiłku z team liderami. Oni podczas rozmów z ekipą wstępnie szacują czas i z product ownerem decydują co jest istotne, co nie, co można wyrzucić lub dodać. Product owner czasem ma mylne wrażenie priorytetów lub tego co jest a co nie jest potrzebne. Team liderzy wiedzą też dość ogólnie ile co może zająć szacunkowo. Etap zadań to jednak faktycznie domena stricte programistów w teamie. Najczęściej pierwszego dnia sprintu prowadzą oni jakąś wspólną rozmowę, gdzie decydują które z dostępnych user stories będą rozpatrywane, dzielą je na zadania i szacują każde z zadań czasowo. Muszą wziąć też poprawkę na ewentualne bugi z poprzedniego lub poprzednich sprintów. Potem zgłasza się takie coś do akceptacji na dany sprint. Gdy już mamy zadania, programiści najczęściej łapią się za te, które uważają za sobie odpowiadające lub najbardziej pilne. Zazwyczaj da się wydzielić niezależne na tyle, by każdy miał coś do robienia. Jeden się łapie za opracowanie dokładnego i działającego modelu danych, inny za testy, jeszcze inny za choćby rozpykanie flow funkcjonalności i tak dalej. Czasem niektóre osoby będą wzajemnie współpracować (model danych + flow). Z czasem jednak model danych będzie już istniał i jedynie drobne modyfikacje będą zachodziły. To niemal eliminuje konieczność porządnego rozpatrywania tego elementu. Encje już będziesz miał, tylko będziesz musiał je zgrać

W miarę zgrany zespół powinien już na etapie rozpisywania zadań i szacowania ich wiedzieć, co ile zajmie. To właśnie na tej podstawie się decyduje, które user story będzie w danym sprincie, oraz ile team ich weźmie. Czasem jedno user story zajmie cały sprint, innym razem sprint to będzie i 5 lub więcej user stories. Zależy to od ich stopnia komplikacji czy ilości osób w teamie (urlopy, choroby, święta), a dokładniej dostępnych osobogodzin.
To tylko wydaje się skomplikowane i dziwne, ale to się sprawdza przy teamie jakoś tam metodologię ogarniającego i wiedzącego, choć w stopniu minimalnym, co ile może zająć. Siada się zazwyczaj razem, patrzy na user story (często na etapie analizy powstaje jakiś ogólny wireframe na jakim potem się bazuje) i określa konieczne zadania. Także te poboczne, nie związane ściśle z funkcjonalnością, ale które mają na nią wpływ. Mając już zadania, przystępuje się do ich czasowego oszacowania. Łapiesz też błędy i uwagi po demie (o ile wystąpią) i określasz ich dodatkowy narzut czasowy. Teraz, mając w miarę dokładne oszacowanie, porównujesz je z dostępnymi osobogodzinami i albo dokładasz kolejne user story albo decydujesz tylko na to co masz.
Tablica... Tutaj przyda Ci się jakiś issue tracker. Na chwilę obecną w zasadzie najwięcej osób łapie się za Redmine'a, ale nie jest on jedyny. Oczywiście dobór oprogramowania zależy także od tego jak ma wyglądać cały proces produkcyjny. Ty skupiłeś się tylko na tablicy, ale przecież kod trzeba testować, deployować na serwer, zapewnić jakiś system kontroli jego wersji. Tutaj od razu wchodzi wiele innych dodatkowych narzędzi i to też trzeba ogarnąć jakoś. Zwłaszcza gdy łapiesz się za wdrożenie continuous integration. Bo wtedy dopiero zaczyna się zabawa na serio.