1) Every fullnode must reference neighbors and must be referenced by (same) neighbors. When a new transaction is submited to a fullnode: it immediately broadcast it to all it's neighbors. So a node don't need to "fetch" transactions from another node, it just receive them (it just have to permanently listen for broadcast).
1a) In addition to real-time broadcast : full nodes will also check for received milestones and try to load the whole tangle "hanging below" it from its neighbors. So old nodes (or nodes that were down) will get up to date
Light nodes don't need to be aware of every new transaction.
2) By default, there is a maximum of 100000 transactions returned when you call findTransactions(criterias...). The fullnode can decide to decrease/increase this number (it's a simple configuration parameter)